数据库引擎
‘壹’ 常用的数据库引擎有哪些
1.数据库引擎
Microsoft JET (Joint Engineering Technologe) 是Access和Visual Basic所提供的内嵌数据库功能的核心元素。JET是一种全能关系数据库引擎,可用来处理大多数中小型数据库。所谓数据库引擎是应用程序和数据库存储之间的一种接口,它将与数据库有关的内存管理、游标管理和错误管理等具体而复杂的细节问题抽象为一个既高度一致又简化的编程接口。
Jet数据库引擎包含在一组动态链接库(DLL)文件中,在运行时,这些文件被链接到Visual Basic程序。它把应用程序的请求翻译成对.mdb文件或其他数据库的物理操作。它真正读取、写入和修改数据库,并处理所有内部事务,如索引、锁定、安全性和引用完整性等。它还包含一个查询处理器,用于接收并执行结构化查询语言(sql)的查询来实现所需的数据库操作。另外,Jet数据库引擎还包含一个结果处理器.用来管理查询所返回的结果。
2.ODBC
Open DataBase Connectivity(ODBC,开放数据库互连)是由Microsoft定义的一种数据库访问标准,它提供一种标准的数据库访问方法以访问不同平台的数据库。一个ODBC应用程序既可以访问在本地PC机上的数据库,也可以访问多种异构平台上的数据库,例如SQL Server、Oracle或者DB2。
ODBC本质上是一组数据库访问API(应用编程接口),但编程人员通过ODBC访问数据库时无需深入理解ODBC函数就可以访问ODBC功能,这是因为象Visual Basic这样的开发工具都提供了一些对象封装了ODBC函数。
3.OLE DB
OLE DB是Microsoft开发的最新数据库访问接口,Microsoft将其定义为ODBC接班人。与ODBC类似,OLE DB提供了对关系数据库的访问,同时在此基础上,它对ODBC所提供的功能进行了一部分的扩展。作为一种标准的接口,OLE DB可以访问所有类型的数据,包括关系数据库、dBase等ISAM(索引序列访问方法)类型的文件、甚至E-MAIL或者Windows 2000活动目录等。
OLE DB应用程序可以分为两种:OLE DB提供者(OLE DB Provider)和OLE DB使用者(OLE DB Consumer),OLE DB使用者就是使用OLE DB接口的应用程序,而OLE DB提供者负责访问数据源,并通过OLE DB接口向OLE DB使用者提供数据。
‘贰’ Mysql数据库3种存储引擎有什么区别
MySQL常见的三种存储引擎为InnoDB、MyISAM和MEMORY。其区别体现在事务安全、存储限制、空间使用、内存使用、插入数据的速度和对外键的支持。具体如下:
1、事务安全:
InnoDB支持事务安全,MyISAM和MEMORY两个不支持。
2、存储限制:
InnoDB有64TB的存储限制,MyISAM和MEMORY要是具体情况而定。
3、空间使用:
InnoDB对空间使用程度较高,MyISAM和MEMORY对空间使用程度较低。
4、内存使用:
InnoDB和MEMORY对内存使用程度较高,MyISAM对内存使用程度较低。
5、插入数据的速度:
InnoDB插入数据的速度较低,MyISAM和MEMORY插入数据的速度较高。
6、对外键的支持:
InnoDB对外键支持情况较好,MyISAM和MEMORY两个不支持外键。
三种引擎特点如下:
1、InnoDB存储引擎
InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),其它存储引擎都是非事务安全表,支持行锁定和外键,MySQL5.5以后默认使用InnoDB存储引擎。
InnoDB特点: 支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。
如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
2、MyISAM存储引擎
MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务,不支持外键。
MyISAM特点: 插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用
3、MEMORY存储引擎
MEMORY存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问。
MEMORY特点: 所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。
它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。
(2)数据库引擎扩展阅读:
mysql其余不太常见的存储引擎如下:
1、BDB: 源自Berkeley DB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性
2、Merge :将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用
3、Archive :非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差
4、Federated: 将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用
5、Cluster/NDB :高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用
6、CSV: 逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个.CSV文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV存储引擎不支持索引。
7、BlackHole :黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继
‘叁’ 数据库引擎 什么是数据库引擎。谁能详细介绍一下
每种数据库的数据格式,内部实现机制都是不同的,
要利用一种开发工具访问一种数据库,就必须通过一种中介程序,
这种开发工具与数据库之间的中介程序就叫数据库引擎。
‘肆’ 如何查看mysql数据库的引擎
一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看:
看你的mysql现在已提供什么存储引擎:
mysql> show engines;
看你的mysql当前默认的存储引擎:
mysql> show variables like '%storage_engine%';
你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):
mysql> show create table 表名;
MySQL数据库引擎详解
作为Java程序员,MySQL数据库大家平时应该都没少使用吧,对MySQL数据库的引擎应该也有所了解,这篇文章就让我详细的说说MySQL数据库的Innodb和MyIASM两种引擎以及其索引结构。也来巩固一下自己对这块知识的掌握。
Innodb引擎
Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别,关于数据库事务与其隔离级别的内容请见数据库事务与其隔
离级别这篇文章。该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,MySQL
运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是该引擎不支持FULLTEXT类型的索引,而且它没有保存表的行数,当SELECT
COUNT(*) FROM
TABLE时需要扫描全表。当需要使用数据库事务时,该引擎当然是首选。由于锁的粒度更小,写操作不会锁定全表,所以在并发较高时,使用Innodb引擎
会提升效率。但是使用行级锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表。
MyIASM引擎
MyIASM是MySQL默认的引擎,但是它没有提供对数据库事务的支持,也不支持行级锁和外键,因此当INSERT(插入)或UPDATE(更
新)数据时即写操作需要锁定整个表,效率便会低一些。不过和Innodb不同,MyIASM中存储了表的行数,于是SELECT COUNT(*)
FROM
TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描。如果表的读操作远远多于写操作且不需要数据库事务的支持,那么MyIASM也是很好的选
择。
两种引擎的选择
大尺寸的数据集趋向于选择InnoDB引擎,因为它支持事务处理和故障恢复。数据库的大小决定了故障恢复的时间长短,InnoDB可以利用事务日志
进行数据恢复,这会比较快。主键查询在InnoDB引擎下也会相当快,不过需要注意的是如果主键太长也会导致性能问题,关于这个问题我会在下文中讲到。大
批的INSERT语句(在每个INSERT语句中写入多行,批量插入)在MyISAM下会快一些,但是UPDATE语句在InnoDB下则会更快一些,尤
其是在并发量大的时候。
Index——索引
索引(Index)是帮助MySQL高效获取数据的数据结构。MyIASM和Innodb都使用了树这种数据结构做为索引,关于树我也曾经写过一篇文章树是一种伟大的数据结构,只是自己的理解,有兴趣的朋友可以去阅读。下面我接着讲这两种引擎使用的索引结构,讲到这里,首先应该谈一下B-Tree和B+Tree。
B-Tree和B+Tree
B+Tree是B-Tree的变种,那么我就先讲B-Tree吧,相信大家都知道红黑树,这是我前段时间学《算法》一书时,实现的一颗红黑树,大家
可以参考。其实红黑树类似2,3-查找树,这种树既有2叉结点又有3叉结点。B-Tree也与之类似,它的每个结点做多可以有d个分支(叉),d称为B-
Tree的度,如下图所示,它的每个结点可以有4个元素,5个分支,于是它的度为5。B-Tree中的元素是有序的,比如图中元素7左边的指针指向的结点
中的元素都小于7,而元素7和16之间的指针指向的结点中的元素都处于7和16之间,正是满足这样的关系,才能高效的查找:首先从根节点进行二分查找,找
到就返回对应的值,否则就进入相应的区间结点递归的查找,直到找到对应的元素或找到null指针,找到null指针则表示查找失败。这个查找是十分高效
的,其时间复杂度为O(logN)(以d为底,当d很大时,树的高度就很低),因为每次检索最多只需要检索树高h个结点。
接下来就该讲B+Tree了,它是B-Tree的变种,如下面两张图所示:
vcHLx/i85LLp0a/Qp8LKoaM8L3A+DQo8aDMgaWQ9"myisam引擎的索引结构">MyISAM引擎的索引结构
MyISAM引擎的索引结构为B+Tree,其中B+Tree的数据域存储的内容为实际数据的地址,也就是说它的索引和实际的数据是分开的,只不过是用索引指向了实际的数据,这种索引就是所谓的非聚集索引。
Innodb引擎的索引结构
MyISAM引擎的索引结构同样也是B+Tree,但是Innodb的索引文件本身就是数据文件,即B+Tree的数据域存储的就是实际的数据,这种索引就是聚集索引。这个索引的key就是数据表的主键,因此InnoDB表数据文件本身就是主索引。
因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有),如果没有显式指定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。
并且和MyISAM不同,InnoDB的辅助索引数据域存储的也是相应记录主键的值而不是地址,所以当以辅助索引查找时,会先根据辅助索引找到主
键,再根据主键索引找到实际的数据。所以Innodb不建议使用过长的主键,否则会使辅助索引变得过大。建议使用自增的字段作为主键,这样B+Tree的
每一个结点都会被顺序的填满,而不会频繁的分裂调整,会有效的提升插入数据的效率。
‘伍’ 数据库引擎
检查服务是否启动 其次看连接字符串是否正确 再次看连接的驱动类型设置是否正确
‘陆’ mysql数据库的引擎和表引擎的区别
这个是考虑性能的问题,还有事务的支持,吧 网络一下你就知道
MyISAM、InnoDB、Heap(Memory)、NDB
貌似一般都是使用 InnoDB的,
mysql的存储引擎包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。
最常使用的2种存储引擎:
1.Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使用Myisam。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD(MYData,存储数据)、.MYI(MYIndex,存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。
2.InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
不知道是不是对你有帮助
‘柒’ 如何更改mysql数据库引擎
修改MySQL数据库引擎步骤如下
第一:修改my.ini,在[mysqld]下加上:
default-storage-engine=引擎名称
其中的等号后面是要指定的数据库引擎名称。
第二:用sql语句修改已经建成表的引擎:
alter table tableName type=InnoDB --type语法在4.X版本下存在
alter table tableName ENGINE=InnoDB --5.X下都改成engine=innodb
举例说明下面贴出我的my.ini文件供参考:
[mysqld] basedir=C:\Program Files\VertrigoServ\Mysql\ datadir=C:\Program Files\VertrigoServ\Mysql\data\ port =3306 key_buffer =64M max_allowed_packet =1M table_cache =128 sort_buffer_size =512K net_buffer_length =8K read_buffer_size =256K read_rnd_buffer_size =512K myisam_sort_buffer_size =68M default-storage-engine=INNODB [mysqlmp] quick max_allowed_packet =116M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [isamchk] key_buffer =20M sort_buffer_size =20M read_buffer =62M write_buffer =62M [myisamchk] key_buffer =20M sort_buffer_size =20M read_buffer =62M write_buffer =62M [mysqlhot] interactive-timeout
按照以上的代码提示操作,我们就能够成功地修改MySQL数据库引擎为INNODB了。
‘捌’ 什么是数据库引擎
这种理论性的东西,建议楼主还是看书吧,一开始看可能不会明白其含义,结合其实例,再考虑生活中相似的东西来比喻,理解起来就好点了,不过想真正理解这个东西,不是短时间就能理解的,先知道这个东西是做什么用的,可以用在什么场合,有什么特点,慢慢来吧
‘玖’ 数据库服务器和数据库引擎有什么区别
比方说一个服务器上放了很多数据库,那么多数据库一个一个地管是不是很麻烦?所有就需要一个东西用来管理这个服务器上的所有数据库,这就是数据库管理系统与数据库的区别。也可以用这样一个例子说明,你有很多本书籍,每本书籍相当于一个数据库,如果你的书籍太多又乱丢的话,是不是很容易出问题?所以你需要一个书柜,把每一本书都摆进书柜去,哪本书放在哪里是不是就很好找了?这样管理起来是不是就容易多了?这书柜就相当于数据库管理系统。而至于数据库引擎与数据库管理系统没多大区别,相当于数据库服务的意思