Archive

Posts Tagged ‘InnoDB’

MySQL中如何启用InnoDB数据引擎

December 14th, 2010 No comments

一、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* ,然后重新启动)

Categories: Database Tags: ,