InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe ( de>ACID de> compliant))型表。InnoDB 提供了行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in de>SELECT de>s)。这些特性均提高了多用户并发操作的性能表现。在InnoDB表中不需要扩大锁定(lock escalation),因为 InnoDB 的列锁定(row level locks)适宜非常小的空间。InnoDB 是 MySQL 上第一个提供外键约束( de>FOREIGN KEY de> constraints)的表引擎。
1. 建立InnoDB数据库:
运行环境:RHEL4U5 + mysql5.0
默认情况下mysql自动安装InnoDB数据引擎,InnoDB的数据库文件和日志文件在默认的数据库数据库目录(/var/lib/mysql 或者/usr/local/mysql/var),现在由于我们要重新建立InnoDB数据库,所以将原来的InnoDB数据库备份好后,删除即可,建立InnoDB数据库的操作步骤:
默认的数据库数据目录:/var/lib/mysql
1) shell> service mysqld stop # 停止mysql进程
2) shell> mv /var/lib/mysql/ib* /var/lib/mysql/InnoDB-old # 备份好原来的InnoDB的数据库文件
3) shell> mkdir /var/lib/mysql/InnoDB #建立存放新InnoDB数据库文件的目录,默认不自动创建目录
4) shell> vi /etc/my.cnf #编辑InnoDB数据库的相关的配置选项
[mysqld]
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /var/lib/mysql/InnoDB/ #innodb数据库数据文件目录
innodb_data_file_path = ibdata2:100M:autoextend:max:2000M #数据文件名称及大小
innodb_log_group_home_dir = /var/lib/mysql/InnoDB/
innodb_log_arch_dir = /var/lib/mysql/InnoDB/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M #缓冲池的大小,一般设置为主存的50%-80%
innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M #日志文件的大小,一般设置为主存的25%
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1 #事务
innodb_lock_wait_timeout = 50
5) shell> chown mysql:mysql /var/lib/mysql/InnoDB/ #设置InnoDB数据库目录的权限,否则无法启动mysql
6) shell> service mysqld start # 启动mysqld进程
这时在/var/lib/mysql/InnoDB 目录中应该可以看到新生成的InnoDB文件,那么InnoDB数据库就生成了。
2. 使用InnoDB数据库:
1)在配置文件中的[mysqld]字段添加 default-storage-engine=INNODB ,将默认的数据库引擎修改为InnoDB
2} 在创建表的时候,手动指定表的类型:
CREATE TABLE mytable (id int, title char(20)) ENGINE = INNODB
注意:修改mysql配置文件需要重启启动mysqld进程