泉源:赛迪网 作者:techyang
若是你是个赛车手,并且按一下按钮就可以当即互换引擎而不必要把车开到车库里去换,那会是什么感受呢?MySQL数据库为开发人员所做的就似乎是按按钮换引擎;它让你选择数据库引擎,并给你一条俭朴的途径来切换它。
MySQL的自带引擎必定是够用了,但是在有些景遇下,其他的引擎大约莫要比手头所用更适合完成任务。若是情愿的话,你乃至可以运用MySQL API来建立本人的数据库引擎,就像打穿气缸装上本人的化油器。现在让我们来看看你该如何选择引擎,以及如何在可用引擎之间切换。
选择你的引擎
你能用的数据库引擎取决于MySQL在安设的工夫是如何被编译的。要添加一个新的引擎,就必须从头编译MySQL。仅仅为了添加一个特性而编译行使次序的概念对付Windows的开发人员来说大约莫很奇怪,但是在UNIX天下里,这已经成为了标准。在缺省景遇下,MySQL支撑三个引擎:ISAM、MyISAM和HEAP。另外两种典范InnoDB和Berkley(BDB),也经常可以运用。
ISAM
ISAM是一个界阐大白且历经工夫磨练的数据表格打点设施,它在打算之时就思考到数据库被盘问的次数要远大大于更新的次数。是以,ISAM施行读取把持的速度很快,并且不占用大批的内存和存储资本。ISAM的两个主要不敷之处在于,它不支撑事件措置,也不成以容错:若是你的硬盘崩溃了,那么数据文件就无律例复了。若是你正在把ISAM用在枢纽任务行使次序里,那就必须经常备份你全数的实时数据,议决其复制特性,MySQL可以支撑多么的备份行使次序。
MyISAM
MyISAM是MySQL的ISAM扩展格局和缺省的数据库引擎。除了供给ISAM里所没有的索引和字段打点的大批功能,MyISAM还运用一种表格锁定的机制,来优化多个并发的读写把持。其代价是你必要经常运转OPTIMIZE TABLE号令,来恢复被更新机制所华侈的空间。MyISAM另有一些有效的扩展,比如用来修单数据库文件的MyISAMChk对象和用来恢复华侈空间的MyISAMPack对象。
MyISAM强调大了疾速读取把持,这大约莫就是为什么MySQL遭到了Web开发云云喜欢的主要缘由:在Web开发中你所住手的大批数据把持都是读取把持。以是,大大多数捏造主机供给商和Internet平台供给商(Internet Presence Provider,IPP)只允许运用MyISAM格局。
HEAP
HEAP允许只驻留在内存里的且自表格。驻留在内存里让HEAP要比ISAM和MyISAM都快,但是它所打点的数据是不摆荡的,并且若是在关机之前没有住手保管,那么全数的数据都市损掉。在数据行被删除的工夫,HEAP也不会华侈大批的空间。HEAP表格在你必要运用SELECT表达式来选择和操控数据的工夫异常有效。要记住,在用完表格之后就删除表格。让我再反复一遍:在你用完表格之后,不要忘掉删除表格。
InnoDB和Berkley DB
InnoDB和Berkley DB(BDB)数据库引擎都是造就MySQL灵活性的手艺的间接产物,这项手艺就是MySQL API。在运用MySQL的工夫,你所面对的每一个搬弄几乎都源于ISAM和MyISAM数据库引擎不支撑事件措置也不支撑外来键。只管要比ISAM和MyISAM引擎慢许多,但是InnoDB和BDB包含了对事件措置和外来键的支撑,这两点都是前两个引擎所没有的。如前所述,若是你的打算必要这些特性中的一者大概两者,那你就要意愿运用后两个引擎中的一个了。
若是感受本人其实其实手艺拙劣,你还可以运用MySQL 来建立本人的数据库引擎。这个API为你供给了把持字段、记录、表格、数据库、衔接、宁静帐号的功能,以及设立建树诸如MySQL多么DBMS所必要的全数其他有数功能。深入讲授API已经凌驾了本文的局限,但是你必要看法MySQL 的存在及其可交流引擎面前的手艺,这一点是很告急的。估计这个插件式数据库引擎的模型乃至可以被用来为MySQL建立外地的XML供给器(XML provider)。(任何读到本文的MySQL 开发人员可以把这一点当作是个要求。)
版权声明:
原创作品,允许转载,转载时请务必以超链接体式格局标明文章 原始情由 、作者信息和本声明。不然将追查法则责任。