mysql my.ini 优化_MySql 性能优化(my.ini)

本文介绍了MySQL性能优化中的my.ini配置,重点关注max_connections、table_cache、innodb_flush_log_at_trx_commit、innodb_buffer_pool_size等关键参数。通过合理设置这些参数,可以提升数据库性能,例如调整table_cache以保持Open_tables与Opened_tables的良好比例,设置innodb_flush_log_at_trx_commit为2以优化磁盘写日志操作,以及适当增大innodb_buffer_pool_size以提高数据缓存和索引缓存的效果。
摘要由CSDN通过智能技术生成

查看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数据库放在生产环境中试运行一段时间,然后把参数的值调整得比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 |

+-------------------+-------+

其他配置后续继续添加~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值