命令记不住

登陆

InnoDB 存储引擎核心特性

InnoDB存储引擎核心特性

1.InnoDB存储引擎核心特性

1. 存储引擎

1.1 查看

show engines;
show variables like 'default_storage_engine';
select @@default_storage_engine;

1.2 如何指定和修改存储引擎
(1) 通过参数设置默认引擎
(2) 建表的时候进行设置
(3) alter table t1 engine=innodb;

2. 表空间

2.1 共享表空间

innodb_data_file_path

一般是在初始化数据之前就设置好
例子:

innodb_data_file_path=ibdata1:512M:ibdata2:512M:autoextend

2.2 独立表空间

show variables like 'innodb_file_per_table';

2.缓冲区池

1.查询

select @@innodb_buffer_pool_size;
show engine innodb status\G

innodb_buffer_pool_size  

一般建议最多是物理内存的 75-80%

innodb_flush_log_at_trx_commit (双一标准之一)

2.作用:

主要控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0、1、2三个。

3.查询:

select @@innodb_flush_log_at_trx_commit;

4.参数说明:

  • 1.每次事物的提交都会引起日志文件写入、flush磁盘的操作,确保了事务的ACID;flush 到操作系统的文件系统缓存 fsync到物理磁盘
  • 0.表示当事务提交时,不做日志写入操作,而是每秒钟将log buffer中的数据写入日志文件并flush磁盘一次;
  • 2.每次事务提交引起写入日志文件的动作,但每秒钟完成一次flush磁盘操作。

Innodb_flush_method=(O_DIRECT, fdatasync)

1.作用

控制的是,log buffer 和data buffer,刷写磁盘的时候是否经过文件系统缓存

2.查看

show variables like '%innodb_flush%';

3.参数值说明

O_DIRECT  :数据缓冲区写磁盘,不走OS buffer 
fdatasync :日志和数据缓冲区写磁盘,都走OS buffer 
O_DSYNC   :日志缓冲区写磁盘,不走 OS buffer

4.使用建议
1.最高安全模式

innodb_flush_log_at_trx_commit=1
Innodb_flush_method=O_DIRECT

5.最高性能:

innodb_flush_log_at_trx_commit=0
Innodb_flush_method=fdatasync

3.redo日志有关的参数

innodb_log_buffer_size=16777216
innodb_log_file_size=50331648
innodb_log_files_in_group = 3
推荐阅读