MySQL内核InnoDB存储引擎详解(5)

日志文件越大意味着buffer pool进行文件间切换的操作越少,从而减少IO,一般至少要保证在高峰期的1小时内的所有日志都能存放在一个日志文件里而不发生切换,如果一小时发生了切换这时候就要改变日志文件大小,当然文件大小也有最大限制,就是所有日志文件的总大小不能超过512G

MySQL内核InnoDB存储引擎详解

时间间隔很大说明能支持数据库繁忙程度很小

Undo表空间配置

默认情况下, undo日志是存放在系统表空间里,但也可以选择在独立的一个或多个undo表空间中存放undo日志 
Innodb_undo_directory参数决定了独立的undo表空间存放目录 
Innodb_undo_logs参数决定了回滚段的个数,该变量可以动态调整 
Innodb_undo_tablespaces参数决定了独立undo表空间的个数,比如设置为16时则会在undo表空间存放目录下创建16个undo文件,默 
认为10M

mysql> show variables like '%innodb_undo%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_undo_directory | ./ |
| innodb_undo_log_truncate | OFF |
| innodb_undo_logs | 128 |
| innodb_undo_tablespaces | 0 |

临时表空间配置

默认情况下, innodb会创建一个自增长的ibtmp1文件在数据文件夹下作为临时表空间数据文件。 
Innodb_temp_data_file_path参数可以指定文件路径,文件名和文件大小

mysql> show variables like '%innodb_temp%';
+----------------------------+-----------------------+
| Variable_name | Value |
+----------------------------+-----------------------+
| innodb_temp_data_file_path | ibtmp1:12M:autoextend |
+----------------------------+-----------------------+

数据页配置

Innodb_page_size参数用来指定所有innodb表空间的数据页大小。 默认是16K大小,也可以设置为64K、 32K、 8K和4K。一般设置为存储磁盘的block size接近的大小.

内存相关配置

Innodb_buffer_pool_size参数确定了缓存表数据和索引数据的内存区域大小,默认为128M,推荐设置为系统内存的50%~80%。 
在服务器有大量内存的情况下,也可以设置多个缓存以提高系统并发度。 
Innodb_buffer_pool_instances参数就是用来做这个设置。 
Innodb_log_buffer_size参数确定了redo log缓存的大小,默认值是16M, 其大小取决于是否有某些大的事务会大量修改数据而导致在事务执行过程中就要写日志文件。

InnoDB 只读设置

InnoDB可以通过—innodb-read-only参数设置数据表只能读取 ,默认是0

[mysqld]
innodb-read-only=1  #表示开启innodb_read_only

 

mysql> show variables like '%read_only%';
+-----------------------+-------+
| Variable_name        | Value |
+-----------------------+-------+
| innodb_read_only      | OFF  |
| read_only            | OFF  |
| super_read_only      | OFF  |
| transaction_read_only | OFF  |
| tx_read_only          | OFF  |
+-----------------------+-------+

innodb_read_only 开启 对所有的innodb的表都是只读权限 。 
read_only 开启 只对普通用户的innodb的表 是只读权限 对管理员无效 如果要使其普通用户生效,加上super权限。 

mysql> show grants for yj@localhost;
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for yj@localhost                                                                                                                                                                                              |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SUPER ON *.* TO 'yj'@'localhost'                                                                                                                                                                              |
| GRANT SELECT, INSERT, DELETE, CREATE, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `book`.* TO 'yj'@'localhost' |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

InnoDB buffer pool 配置

InnoDB buffer pool设置

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1fe1e788fe1712d1b3106819c6ce028f.html