您的位置:首页 > 数据库 > MySQL

MySQL中如何启用InnoDB数据引擎

2012-03-18 14:07 411 查看
一、InnoDB 介绍

InnoDBMySQL 上第一个提供外键约束的引擎,除了提供事务处理外,InnoDB 还支持行锁,提供和 Oracle 一样的一致性的不加锁读取,能增加并发读的用户数量并提高性能,不会增加锁的数量。

InnoDB 的设计目标是处理大容量数据时最大化性能,它的 CPU 利用率是其他所有基于磁盘的关系数据库引擎中最有效率的。

InnoDB 是一套放在 MySQL 后台的完整数据库系统,InnoDB 有它自己的缓冲池,能缓冲数据和索引,InnoDB 还把数据和索引存放在表空间里面,可能包含好几个文件,这和 MyISAM 表完全不同,在 MyISAM 中,表被存放在单独的文件中,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB。

如果您的MySQL是使用二进制版本安装的,那么可能您需要手工启用。如果你使用源码版本下载,自己编译的话,需要采用 –with-plugins=innobase 选项:

./configure –prefix=/usr/local/mysql –with-extra-charsets=all –enable-thread-safe-client –enable-assembler –with-charset=utf8 –enable-thread-safe-client –with-extra-charsets=all –with-big-tables –with-readline –with-ssl –with-embedded-server –enable-local-infile --with-plugins=innobase

二、检查当前MySQL支持的数据库引擎

在MySQL的命令行模式下,可以用 show engines\G; 命令查看各个引擎的状态

mysql> show engines\G

*************************** 1. row ***************************

Engine: MyISAM

Support: DEFAULT

Comment: Default engine as of MySQL 3.23 with great performance

*************************** 2. row ***************************

Engine: MEMORY

Support: YES

Comment: Hash based, stored in memory, useful for temporary tables

*************************** 3. row ***************************

Engine: InnoDB

Support: YES

Comment: Supports transactions, row-level locking, and foreign keys

*************************** 4. row ***************************

Engine: BerkeleyDB

Support: NO

Comment: Supports transactions and page-level locking

*************************** 5. row ***************************

Engine: BLACKHOLE

Support: YES

Comment: /dev/null storage engine (anything you write to it disappears)

*************************** 6. row ***************************

Engine: EXAMPLE

Support: NO

Comment: Example storage engine

*************************** 7. row ***************************

Engine: ARCHIVE

Support: YES

Comment: Archive storage engine

*************************** 8. row ***************************

Engine: CSV

Support: NO

Comment: CSV storage engine

*************************** 9. row ***************************

Engine: ndbcluster

Support: NO

Comment: Clustered, fault-tolerant, memory-based tables

*************************** 10. row ***************************

Engine: FEDERATED

Support: YES

Comment: Federated MySQL storage engine

*************************** 11. row ***************************

Engine: MRG_MYISAM

Support: YES

Comment: Collection of identical MyISAM tables

*************************** 12. row ***************************

Engine: ISAM

Support: NO

Comment: Obsolete storage engine

12 rows in set (0.00 sec)

这里可以看到

Engine: InnoDB

Support: YES

Comment: Supports transactions, row-level locking, and foreign keys

也就是说,MySQL已经支持了InnoDB引擎,但是并不是作为默认数据库引擎。

三、启用InnoDB的方法

1、关闭mysql的服务

2、修改/etc/my.cnf

将default-storage-engine=InnoDB前的注释(#)去掉

将skip-innodb这行注释(加上#)

将my.cnf中关于innodb的配置前面的#去掉

3、保存后重启mysql服务(如果启动服务时失败,可以试着将innodb日志文件清除 rm ib* ,然后重新启动)

本文出自 “屌丝运维男” 博客,请务必保留此出处http://navyaijm.blog.51cto.com/4647068/809415
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: