InnoDB管理

来源:互联网 发布:西安聚赢网络 编辑:程序博客网 时间:2024/06/03 12:17

         InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read inSELECTs)。这些特性均提高了多用户并发操作的性能表现。在InnoDB表中不需要扩大锁定(lock escalation),因为 InnoDB 的列锁定(row level locks)适宜非常小的空间。InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。InnoDB 的设计目标是处理大容量数据库系统,它的 CPU 利用率是其它基于磁盘的关系数据库引擎所不能比的。在技术上,InnoDB 是一套放在 MySQL 后台的完整数据库系统,InnoDB 在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。 InnoDB 把数据和索引存放在表空间里,可能包含多个文件,这与其它的不一样,举例来说,在 MyISAM 中,表被存放在单独的文件中。InnoDB 表的大小只受限于操作系统的文件大小,不过目前很多操作系统都支持大文件系统,所以这个限制我们可以不必考虑了。

 

2  InnoDB管理

    为了使用 InnoDB 表引擎,必须在‘my.cnf’‘my.ini’文件中详细指定 InnoDB 的启动配置。

 

innodb_data_home_dir:

 

innodb_data_home_dir="E:/MySQL Datafiles/"

 

该参数我们也可以不指定,而在另外一个变量innodb_data_file_path中给出绝对路径。

 

 

innodb_data_file_path

 

如果该参数不指定,MySQL-4.0 将默认地在 innodb_data_home_dir目录下建立一个 10 MB大小自扩充(auto-extending)的文件‘ibdata1’(在MySQL-4.0.0与 4.0.1 中数据文件的大小为 64 MB 并且是非自扩充的(not auto-extending))。

 

文件声明格式: file_name:file_size[:autoextend[:max:max_file_size]]

 

innodb_data_file_path=/path1/ibdata1:30M;/path2/ibdtat2:30M:autoextend

 

如果我们想为InnoDb添加表空加,我们需要把嘴喙一个表空间的autoextend属性关闭,再在配置文件my.ini中的innodb_data_file_path参数后边添加数据文件。该操作需要重启MYSQL数据库才可生效。

(一)迁移innodb_data_home_dir目录

1 迁移ibdata1目录到test数据库中

[root@SR3 mysqldata]# cp ibdata1 test

2 修改配置文件my.cnf

 

innodb_data_home_dir=/mysqldata/test

 

3.重启数据库

 

[root@SR3 mysqldata]# service mysql restart
MySQL server PID file could not be found![FAILED]
Starting MySQL.............................[  OK  ]

4 查看参数

mysql> show variables like 'innodb_data%';
+-----------------------+------------------------+
| Variable_name         | Value                  |
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:10M:autoextend |
| innodb_data_home_dir  | /mysqldata/test        |
+-----------------------+------------------------+
2 rows in set (0.00 sec)

 

 

innodb 管理的两个磁盘文件是表空间文件和日志文件.

 

表空间定义:

innodb_data_file_path=datafile_spec1[;datafile_spec2]...

 

文件声明格式: file_name:file_size[:autoextend[:max:max_file_size]]

innodb_data_home_dir 声明文件存放目录.

 

mysql 读取配置文件的顺序:

`/etc/my.cnf' Global options.

`DATADIR/my.cnf' Server-specific options.

`defaults-extra-file' The file specified with the --defaults-extra-file option.

`~/.my.cnf' User-specific options.

 

在 Linux x86 上不要把内存设置太高,内存使用下面的加起来不要超过2G:

 

innodb_buffer_pool_size

+ key_buffer_size

+ max_connections*(sort_buffer_size+read_buffer_size+binlog_cache_size)

+ max_connections*2MB

 

InnoDb 参数说明:

 

innodb_additional_mem_pool_size

存储数据字典信息和内部结构信息, 如果你的表越多,这个需要的内存就越多,如果你预留的空间不够,就开始象系统申请内存.errlog 会有错误. 缺省设置为1M.

 

innodb_autoextend_increment

当表空间满时字段扩展大小.

 

innodb_buffer_pool_size

数据和索引用的缓存大小.一般时系统物理内存的50~80% .

 

更多的InnoDB参数我们在第七章MYSQL数据库优化中详细讲述。