mysqlmy.ini优化_MySql性能优化(my.ini)
查看MySQL参数,可以使⽤show variables和show status命令查看,前者查看服务器静态参数,即在数据库启动后不会动态更改的值,⽐如缓冲区、字符集等。后者查看服务器的动态运⾏状态信息,即数据库运⾏期间动态变化的信息,⽐如锁,当前连接数等。
1.max_connections = 3000MySQL允许最⼤的进程连接数,个⼈觉得没必要加⼤此值 .
2 .table_cache = 614指⽰表调整缓冲区⼤⼩。
table_cache 参数设置表⾼速缓存的数⽬。每个连接进来,都会⾄少打开⼀个表缓存。因 table_cache 的⼤⼩应与 max_connections 的设置有关。
当 Mysql 访问⼀个表时,如果该表在缓存中已经被打开,则可以直接访问缓存;如果没有被缓存,但是在 Mysql 表缓冲区中还有空间,那么这个表就被打开并放⼊表缓冲区;如果表缓存满了,则会按照⼀定的规则将当前未⽤的表释放,或者临时扩⼤表缓存来存放。使⽤表缓存的好处是可以更快速地访问表中的内容。执⾏ flush tables 会#清空缓存的内容。
table_cache 计算⽅式:
查看Open_tables 与 Opened_tables的值:
mysql> show global status like 'open%_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables | 256 |
| Opened_tables | 922 |
+---------------+-------+
Open_tables :正在打开的表数量。
Opened_tables :已经打开的表数量。
如果Open_tables的值已经接近table_cache的值,且Opened_tables还在不断变⼤,则说明mysql正在将缓存的表释放以容纳新的表,此时可能需要加⼤table_cache的值。对于⼤多数情况,⽐较适合的值:
Open_tables / Opened_tables >= 0.85
Open_tables / table_cache <= 0.95
mysql下载32位如对此参数的把握不是很准:把MySQL数据库放在⽣产环境中试运⾏⼀段时间,然后把参数的值调整得⽐Opened_tables的数值⼤⼀些,并且保证在⽐较⾼负载的极端条件下依然⽐Opened_tables略⼤。
3.innodb_flush_log_at_trx_commit =2mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_flush_log%';
+--------------------------------+-------+
| Variable_name | Value |
+--------------------------------+-------+
| innodb_flush_log_at_timeout | 1 |
| innodb_flush_log_at_trx_commit | 1 |
+--------------------------------+-------+
磁盘写⽇志的操作 (默认1 )
为1时:会在每个事务提交后会执⾏往磁盘写⽇志的操作。
为0表⽰每秒往磁盘写⼀次⽇志。
2表⽰每次事务都往内存提交⽇志,但每秒往磁盘仅写⼊⼀次。
set global innodb_flush_log_at_trx_commit=2; 临时改为 2
强烈建议改为 2
4.innodb_buffer_pool_size数据库缓冲池⼤⼩innodb_buffer_pool 中 主要包括:
数据缓存 (InnoDB数据页⾯)
索引缓存 (索引数据)
缓冲数据 (在内存中修改尚未刷新(写⼊)到磁盘的数据)
建议设置为 系统物理内存的80% (机器上只运⾏MySql的话 )。innodb_buffer_pool_size = innodb_buffer_pool_instances *
innodb_buffer_pool_chunk_size
5.innodb_buffer_pool_instances 缓冲池划分的区域数此选项仅在将innodb_buffer_pool_size设置为1GB或更⼤时⽣效。总⼤⼩将在所有缓冲池中划分。为获得最佳效率,需指定innodb_buffer_pool_instances和innodb_buffer_size⼤⼩的组合,以便每个缓冲池实例⾄少为1 GB。
在mysql 5.6.6之前,默认值是1。从mysql 5.6.6开始,默认值为8,除了32位windows系统,默认值取决于innodb_buffer_pool_size 的值。
如果innodb_buffer_pool_size⼤于1.3gb,innodb_buffer_pool_instances的默认值是innodb_buffer_pool_size/128mb,每个块都有单独的内存分配请求。选择1.3GB作为边界,在该边界处,32位windows 系统可能⽆法分配单个缓冲池所需的连续地址空间。
否则,默认值为1。
6.innodb_file_per_table 表空间独⽴表空间: 每个表空间包含单个数据和⽂件索引,并存储在它⾃⼰的⽂件系统当中。
系统表空间:所有数据和⽂件索引都放到了⼀个⽂件中,但⼀个⽂件可以分成N个⼩⽂件,但多个表的索引混乱。
建议开启。
7.key_buffer_size 索引缓冲区的⼤⼩ ( 只对 MAISAM 有效)它决定索引处理的速度
key_reads :从硬盘读取key到缓存中(未命中的索引请求)
Key_read_requests :从缓存的请求key的总数量(全部请求数量)
若 key_reads / key_read_requests <= 0.1% 左右 , 表⽰健康状况尚好 。
若 key_reads / key_read_requests > 0.1% , 则需加⼤ key_buffer_size 值。
mysql> show global status like 'key_read%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Key_read_requests | 466968 |
| Key_reads | 2563 |
+-------------------+-------+
其他配置后续继续添加~
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论