Rumah > pangkalan data > tutorial mysql > 关于MySQL 优化的一些操作

关于MySQL 优化的一些操作

迷茫
Lepaskan: 2017-03-26 13:13:23
asal
1340 orang telah melayarinya

1.缓存池

MySQL的设计是通过缓存池的方式的,也就是说将一部分的数据都储存到内存中,当我们查找一个数据的时候,如果发现在缓存池中的时候,就能够直接的
从缓存中获取,如果不在的话,那么就去磁盘中加载.所以建议数据库服务器采用64位的操作系统,这样就能够使用很大的内存。下面的一些参数是设置内存池
的:

SHOW VARIABLES LIKE "innodb_buffer_pool_instances"
Salin selepas log masuk

查看缓存池的个数,可以通过globle 或者直接在配置文件中进行设置。

show VARIABLES like "innodb_buffer_pool_size"
Salin selepas log masuk

查看每个缓存池的大小,查询出来的是字节。

需要注意,这个设置要考虑到自身服务器的能力.

为了验证缓存的命中率,可以通过

SHOW ENGINE INNODB STATUS
Salin selepas log masuk

其中有一行输出非常重要,可以看出命中率:

Buffer pool hit rate 1000 / 1000
Salin selepas log masuk

表示的就是缓存的命中率,一般不能低于95%

2.LRU 列表

数据中缓存中是通过LRU的方式储存中,也就是说查询的最新数据是放在最前面的,也就是说是热点数据,但是这个LRU算法有一些变种,具体的就是每次

查询出来的数据并不是插入到最前面的位置,而是插入到中间,这个位置成为midpoint,默认的位置是3/5的位置,这样做的原因是防止一些扫表的操作将

数据全部给刷新出去,有几个参数可以进行设置

SHOW VARIABLES LIKE "innodb_old_blocks_pct"
Salin selepas log masuk

表示的就是midpoint的位置,默认的是:

,大概就是3/5吧

还有一个参数是

SHOW VARIABLES LIKE "innodb_old_blocks_time"
Salin selepas log masuk

也就是数据插入到midpoint的时候,需要多久才起效。

如果在真实的环境中遇到热点数据比较集中的情况下,可以通过设置LRU的参数来防止热点数据被刷出

Atas ialah kandungan terperinci 关于MySQL 优化的一些操作. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan