MySQL是我们比较常用的一种数据库软件。它有着诸多的优点,如开源的,免费的等等。其实它还有一个很好的特点,那就是有多种引擎可以供你选择。如果赛
车手能根据不同的路况,地形随手更换与之最适宜的引擎,那么他们将创造奇迹。然而目前他们还做不到那样便捷的更换引擎,但是我们却可以!
所谓知己知彼方可百战不殆,要想将它们发挥到极致,首先我们应该来认识一下MySQL提供给我们的这几种引擎。
一般来说,MySQL有以下几种引擎:ISAM、MyISAM、HEAP、InnoDB和Berkley(BDB)。注意:不同的版本支持的引擎是有差异
的。当然啦,如果你感觉自己的确技术高超,你还能够使用MySQL++来创建自己的数据库引擎,这个已经out of my
knowledge,牛人可以参照MySQL++ API帮助来实现。下面逐一叙述这5种引擎各自的特性:
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包括了对事务处理和外来键的支持,这两点都是前两个引擎所没有的。如前所述,如果你的设计需要这些特性
中的一者或者两者,那你就要被迫使用后两个引擎中的一个了。
认识完了这么多的引擎,我们也知道了它们应该在什么情况下拿来应急,那么接着我们就要学会如何来更换这些引擎了。
Globle:一种最简单的方法就是更改服务器配置,直接将其设置成你所需要的引擎。这个在
win下通过更改服务器安装目录下的mysql.ini中的default-storage-engine项即可,也可以通过运行MySQL
Server Instance Configuration Wizard做简单的设置。
Per Table:除了全局的方法外,还有一种更灵活的配置方法,那就是按表来设置引擎,这样我们就可以把那些需要用到事务处理的表设置成InnoDB,其他设置成MyISAM,将性能提升到极致,这是不是很令人兴奋呢?设置方法也比较简单:
1、你可以在Create
Table语句的最后添加扩展语句,如TYPE=MyISAM(或者ENGINE =
INNODB)来指定当前标的引擎类型。也可以用Alter语句在建立表个后进行更改。当你不清楚当前数据库中各表的引擎时可以使用SHOW
TABLE STATUS FROM DBname来查看。
2、使用随MySQL服务器发布同时提供的MySQL客户端来创建表,在创建时可以选择使用的存储引擎。
不同的引擎选择在不同的业务处理上,性能将有天壤之别!!
题外话:
要想服务器性能达到最佳,在配置服务器时也需要好好考虑。如果是在Win下那么可以通过运行MySQL Server Instance Configuration Wizard来设置,它将引导你设置当前服务器的类型等等信息。
还有再有大量数据需要插入的时候可以考虑使用INSERT DELAYED语句(具体语法参考MySQL手册)。当一个客户端使用INSERT DELAYED
时,会立刻从服务器处得到一个确定。并且行被排入队列,当表没有被其它线程使用时,此行被插入。使用INSERT DELAYED
的另一个重要的好处是,来自许多客户端的插入被集中在一起,并被编写入一个块。这比执行许多独立的插入要快很多。当然它也有其适用范围,具体参考手册,我就不再赘述了。
分享到:
相关推荐
3. **ISAM** 是较早的MySQL引擎,主要用于简单查询,不支持事务处理、外键和索引,现在已经被MyISAM取代。 4. **Heap** 或Memory引擎,将数据存储在内存中,提供极高的读写效率,但数据的持久性较差,一旦MySQL服务...
### MySQL引擎及索引详解 #### 一、MySQL数据库引擎概览 数据库引擎作为数据库管理系统的核心组成部分,在存储、处理和保护数据方面起着至关重要的作用。通过这些引擎,我们可以实现对数据的有效管理,确保数据的...
MySQL存储引擎是数据库管理系统的核心组成部分,负责数据的存储和访问方式。MySQL系统由多个组件构成,包括管理工具、连接池、SQL接口、分析器、优化器、缓存、存储引擎和硬盘。其中,存储引擎是专门处理表数据的...
若何用mysql-connector-net-6.2.2.rar 来进行mysql数据库数据调用的详细使用方法,亲自测试通过。比.net自带引擎访问数据效率高。
MySQL是一种广泛使用的开源关系型数据库管理系统,其灵活性之一在于提供了多种数据库引擎供用户选择,以适应不同的应用场景。本文将详细介绍MySQL的五种...正确地选择和配置MySQL引擎,是优化数据库性能的关键步骤。
服务器断电后重启,导致MySQL连接失败。mysql.sock文件丢失,innodb引擎表损坏,最直接的解决办法。
MySQL 存储引擎实验报告 本实验报告的主要内容是了解 MySQL 存储引擎的概念、设置和特点,并掌握 MySQL 存储引擎的使用方法。实验中涉及到多种存储引擎,包括 MyISAM 和 InnoDB,考察它们的相同点和区别,并对它们...
对于MySQL引擎的选择,不同的引擎有着各自的优缺点。InnoDB是默认引擎,支持事务处理和行级锁定,适合并发操作。MyISAM则速度较快,但不支持事务,适用于读取密集型应用。其他如Memory引擎用于临时存储,而Archive...
MySQL体系结构 MySQL存储引擎 InnoDB存储引擎
MySQL存储引擎是数据库管理系统中负责数据存储和索引管理的核心组件,它允许MySQL数据库系统在不同的存储需求下灵活选择最优的存储方案。在众多数据库系统中,MySQL独树一帜,提供了多种存储引擎供用户选择,使得...
MySQL 存储引擎详解 MySQL 存储引擎是 MySQL 数据库管理系统中的一种机制,用于管理和存储数据。 MySQL 提供了多种存储引擎,每种引擎都有其特点和优缺。了解 MySQL 存储引擎的特点和优缺是非常重要的,因为它们...
PHP MySQL引擎这是Scott Sandler创建的Slack的Hack SQL FakePHP端口。 PHP MySQL Engine是PHP的单元测试库。 它可以使用MySQL的内存模拟来测试数据库驱动的应用程序。 它支持各种查询,事务等。 该项目扩展了PDO类,...
PHP MySQL引擎PHP MySQL Engine是PHP的库,可让您使用MySQL 5.6的内存模拟来测试数据库驱动的应用程序。 该项目扩展了PDO类,并允许您调用常见的PDO MySQL方法。 它支持各种查询以及某些PDO特定的功能,例如事务和...
13.MySQL引擎MyISAM与InnoDB讲解.mp4 14.MySQL数据库索引及慢查询讲解.mp4 15.MySQL数据库高效优化解析.mp4 16.构建MySQL+keepalived高可用自动切换.mp4 17.构建MySQL+DRBD+Keepalived高可用集群.mp4
《MySQL内核:InnoDB存储引擎 卷1》由资深MySQL专家,机工畅销图书作者亲自执笔,在以往出版的两本InnoDB介绍性图书的基础之上,更深入地介绍InnoDB存储引擎的内核,例如latch、B+树索引、事务、锁等,从源代码的...
MySQL数据库引擎是数据库管理系统的核心组件,它决定了数据的存储方式、访问效率以及支持的功能。MySQL提供了多种数据库引擎供用户根据具体需求选择,每种引擎都有其特定的优势和适用场景。 默认情况下,MySQL安装...
### MySQL存储引擎启用InnoDB详解 #### 一、引言 在MySQL数据库系统中,存储引擎扮演着极其重要的角色,它决定了数据如何被存储、检索和管理。其中,InnoDB作为MySQL中最常用的存储引擎之一,提供了众多高级特性,...
MySQL 是一个广泛使用的关系型数据库管理系统,本文总结了 MySQL 面试中常见的知识点,涵盖了 MySQL 优化、MySQL 引擎、索引、锁等方面的内容,旨在帮助开发者更好地理解和掌握 MySQL 的相关知识。 一、MySQL 优化 ...