MySql学习系列 -- 特殊配置项了解

版权声明:本文为博主原创文章,未经博主允许不得转载。如果感觉文章哪里写的不对或者存在疑问,欢迎留言,共同学习、进步! https://blog.csdn.net/ydm19891101/article/details/85052273

背景

类似于PHP、Apache、Nginx,MySql作为一个服务也依赖于具体的配置文件,并需要在启动时显示指定配置文件或者设置默认的配置文件。

MySql的配置项很多,但我们实际需要关心的也就那么一点,保证基本的配置没问题就可以基本保证MySql的高性能。

相信大家对于如何配置慢查询日志、binlog、pid文件、数据文件、socket等常见的已经有所了解,本文对这些常见的配置不再赘述,重点介绍的是一些很重要但极易忽略的配置。

OK,开启我们的学习之旅吧。

学习

1.key_buffer_size

该配置项只针对MyISAM存储引擎有效,是MyISAM存储引擎用来缓存索引文件的,对于指定的数据大小只有在真正使用的时候才会分配。MyISAM存储引擎数据文件的缓存是由操作系统实现的。


2.innodb_buffer_pool_size


   该配置项只针对InnoDB存储引擎有效,该缓存池可以缓存索引、行记录数据、自适应hash索引、插入缓存、锁、以及其他内部数据结构。InnoDB还会用该缓存池来协助完成延迟写入,对于InnoDB而言,这个参数很重要。因为缓存的数据量会很大,缓存池的预热和关闭都很耗时。
   一个流行的经验法则:设置该缓存的大小为服务器内存的约75%-80%


3.query_cache_size 


    查询缓存,在查询命中缓存的时候可以直接返回值。MySql在启动的时候,会一次性分配并初始化这块内存。如果在服务器运行过程中修改这个变量的值,MySql会立即删除所有缓存的查询,初始化内存,重新分配指定大小的缓存。


4.thread_cache_size 


   MySql是单进程多线程的应用,这个变量表示缓存线程数量,创建、销毁线程都需要开销,使用线程池可以实现复用,节省开销。
   MySql只有在关闭连接时在缓存中增加线程,只有在创建新的连接时才会从缓存中删除线程。


5.read_buffer_size


   MySql在启动时也是会一次性分配指定的内存大小


6.sort_buffer_size

   我们知道索引还可以用作排序,好的索引可以避免进行文件排序。
   只有在查询需要做排序操作时才会为该缓存分配内存。而且,是一次性分配指定大小的内存空间,而不管是否需要那么大的内存空间。
   一种比较好的策略是设置一个比较小的全局变量,然后在会话级别调大查询缓存的大小值。
   尽量通过schema和查询优化来避免查询缓存的使用。

7.open_files_limit

   允许打开的文件大小数,这个和操作系统的文件句柄数是强相关的,一定不能大于系统允许打开的最大句柄数
   否则就会遇到常见的24号错误。 

注意

关于配置有以下几点需要注意:
1、针对配置文件,一种比较好的策略是将其置于版本控制之下
2、如果可能,要尽可能的为缓存分配内存,这样可以避免磁盘的I/O,提高性能
3、在保证基本的配置OK之后就可以将关注点转移到schema、索引、查询优化等内容上去

猜你喜欢

转载自blog.csdn.net/ydm19891101/article/details/85052273