优化数据库最佳方法


帮助你如何迅速优化你MySQL数据库性能_MySQL

优化MySQL

通过网上查资料和自己的尝试,我认为以下系统参数是比较重要的。



(1)、back_log:

MySQL所需的连接数。 当MySQL的主线程在短时间内收到许多连接请求,并且主线程需要一段(尽管很短)时间来检查连接并启动一个新线程时,这种情况就会起作用。

back_log值表示在MySQL暂时停止响应新请求之前的短时间内,堆栈中可以存储的请求数量。 仅当您预计短时间内会出现大量连接时,才应增加此值。 换句话说,该值是传入TCP/IP连接的侦听队列的大小。 操作系统对此队列大小有自己的限制。 尝试将back_log设置为高于操作系统限制没有任何效果。

如果观察主机进程列表,看到大量264084|unauthenticateduser|xxx.xxx.xxx.xxx|NULL|Connect|NULL|login|NULL进程,则需要增加该进程。 back_log这是值得的。 默认值是50,但我将其更改为500。



(2)、interactive_timeout:

服务器在关闭交互连接之前等待交互连接上的操作的秒数。 交互式客户端被定义为使用mysql_real_connect()的CLIENT_INTERACTIVE选项的客户端。 默认值是28800,我把它改成了7200。



(3)、key_buffer_size:

索引块被缓冲并被所有线程共享。 key_buffer_size是用于索引块的缓冲区大小。 尽可能增加索引,以更好地处理索引(对于所有读取和多次写入)。 如果设置太大,系统将开始分页并显着减慢速度。 默认值为8388600(8M),由于MySQL主机有2GB内存,所以我将其更改为402649088(400MB)。



(4),max_connections:

允许的并发客户端数量。 增加该值会增加mysqld所需的文件描述符的数量。 这个数字需要增加。 如果不增加,会频繁出现Toomanyconnections错误。 默认值是100,但我将其更改为1024。



(5)、record_buffer:

每个执行顺序扫描的线程都会为其扫描的每个表分配一个该大小的缓冲区。 如果您经常执行连续扫描,我们建议增加此值。 默认值为131072(128K),但我将其更改为16773120(16M)。



(6)、sort_buffer:

每个需要排序的线程分配一个该大小的缓冲区。 增加此值将加快ORDERBY或GROUPBY操作的速度。 默认值为2097144(2M),但我将其更改为16777208(16M)。



(7)、table_cache:

向所有线程打开的表数量。 增加该值会增加mysqld所需的文件描述符的数量。 MySQL需要为每个打开的唯一表使用两个文件描述符。 默认值是64,我把它改成了512。



(8)、thread_cache_size:

保存供重用的线程数。 如果是,则从缓存中取出一个新线程,如果连接断开时还有空间,则将客户端的线程放入缓存中。 如果你有大量的新线程,你可以使用这个变量值来提高性能。 比较Connections和Threads_created状态下的变量就可以揭示这个变量的作用。 我尝试将其设置为80。



(10),wait_timeout:

服务器在关闭连接之前等待连接上的操作的次数。 默认值是28800,我把它改成了7200。



注意:要调整参数,请修改/etc/my.cnf文件并重新启动MySQL。 这是一个相对保守的练习,上面的结果只是我的意见,可以根据自己主机的硬件条件(尤其是内存大小)进一步修改。

相关文章