Linux环境下MySQL服务器优化的方法详解
发布时间:2012-09-05 16:41:32 作者:佚名
我要评论
本文详细的介绍了在Linux环境下如何给MySQL服务器进行优化
普通的MySQL用户利用表创建和索引操作,以及利用查询的编写能够进行的优化。不过,还有一些只能由MySQL管理员和系统管理员来完成的优化,这些管理员在MySQL服务器或运行MySQL的机器上具有控制权。有的服务器参数直接适用于查询处理,可将它们打开。而有的硬件配置问题直接影响查询处理速度,应该对它们进行调整。
磁盘问题
正如前面所述,磁盘寻道是一个性能的大瓶颈。当数据开始增长以致缓存变得不可能时,这个问题变得越来越明显。对大数据库,在那你或多或少地要随机存取数据,你可以依靠你将至少需要一次磁盘寻道来读取并且几次磁盘寻道写入。为了使这个问题最小化,使用有低寻道时间的磁盘。
为了增加可用磁盘轴的数量(并且从而减少寻道开销),符号联接文件到不同磁盘或分割磁盘是可能的。
1、使用符号连接
这意味着你将索引/数据文件符号从正常的数据目录链接到其他磁盘(那也可以被分割的)。这使得寻道和读取时间更好(如果磁盘不用于其他事情)
2、分割
分割意味着你有许多磁盘并把第一块放在第一个磁盘上,在第二块放在第二个磁盘上,并且第n块在第(nmodnumber_of_disks)磁盘上,等等。这意味着,如果你的正常数据大小于分割大小(或完美地排列过),你将得到较好一些的性能。注意,分割是否很依赖于OS和分割大小。因此用不同的分割大小测试你的应用程序。见10.8使用你自己的基准。注意对分割的速度差异很依赖于参数,取决于你如何分割参数和磁盘数量,你可以得出以数量级的不同。注意你必须选择为随机或顺序存取优化。
为了可靠,你可能想要使用袭击RAID0+1(分割+镜像),但是在这种情况下,你将需要2*N个驱动器来保存N个驱动器的数据。如果你有钱,这可能是最好的选择。然而你也可能必须投资一些卷管理软件投资以高效地处理它。
一个好选择是让稍重要的数据(它能再生)上存在RAID0磁盘上,而将确实重要的数据(像主机信息和日志文件)存在一个RAID0+1或RAIDN磁盘上。如果因为更新奇偶位你有许多写入,RAIDN可能是一个问题。
你也可以对数据库使用的文件系统设置参数。一个容易的改变是以noatime选项挂装文件系统。这是它跳过更新在inode中的最后访问时间,而且这将避免一些磁盘寻道。
硬件问题
可利用硬件更有效地改善服务器的性能:
1、在机器中安装更多的内存。这样能够增加服务器的高速缓存和缓冲区的尺寸,使服务器更经常地使用存放在内存中的信息,降低从磁盘取信息的要求。
2、如果有足够的RAM使所有交换在内存文件系统中完成,那么应该重新配置系统,去掉所有磁盘交换设置。否则,即使有足以满足交换的RAM,某些系统仍然要与磁盘进行交换。
3、增加更快的磁盘以减少I/O等待时间。寻道时间是这里决定性能的主要因素。逐字地移动磁头是很慢的,一旦磁头定位,从磁道读块则较快。
4、在将数据重新放到不同设备之前,应该保证了解该系统的装载特性。如果在特定的物理设备上已经有了某些特定的主要活动,将数据库放到该处实际上可能会使性能更坏。例如,不要把数据库移到处理大量Web通信的Web服务器设备上。
5、在设置MySQL时,应该配置其使用静态库而不是共享库。使用共享库的动态二进制系统可节省磁盘空间,但静态二进制系统更快(然而,如果希望装入用户自定义的函数,则不能使用静态二进制系统,因为UDF机制依赖于动态连接)。
服务器参数的选择
服务器有几个能够改变从而影响其操作的参数(或称变量)。系统变量的当前值可以通过执行MySQLadminvaribles命令来检查,其中几个参数主要与查询有关,有必要在此提一下:
delayed_queue_size
此参数在执行其他INSERTDELAYED语句的客户机阻塞以前,确定来自INSERTDELAYED语句的放入队列的行的数目。增加这个参数的值使服务器能从这种请求中接收更多的行,因而客户机可以继续执行而不阻塞。
key_buffer_size
此参数为用来存放索引块的缓冲区尺寸。如果内存多,增加这个值能节省索引创建和修改的时间。较大的值使MySQL能在内存中存储更多的索引块,这样增加了在内存中找到键值而不用读磁盘块的可能性。
在MySQL3.23版及以后的版本中,如果增加了键缓冲区的尺寸,可能还希望用——init-file选项启动服务器。这样能够指定一个服务器启动时执行的SQL语句文件。如果有想要存放在内存中的只读表,可将它们拷贝到索引查找非常快的HEAP表。
磁盘问题
正如前面所述,磁盘寻道是一个性能的大瓶颈。当数据开始增长以致缓存变得不可能时,这个问题变得越来越明显。对大数据库,在那你或多或少地要随机存取数据,你可以依靠你将至少需要一次磁盘寻道来读取并且几次磁盘寻道写入。为了使这个问题最小化,使用有低寻道时间的磁盘。
为了增加可用磁盘轴的数量(并且从而减少寻道开销),符号联接文件到不同磁盘或分割磁盘是可能的。
1、使用符号连接
这意味着你将索引/数据文件符号从正常的数据目录链接到其他磁盘(那也可以被分割的)。这使得寻道和读取时间更好(如果磁盘不用于其他事情)
2、分割
分割意味着你有许多磁盘并把第一块放在第一个磁盘上,在第二块放在第二个磁盘上,并且第n块在第(nmodnumber_of_disks)磁盘上,等等。这意味着,如果你的正常数据大小于分割大小(或完美地排列过),你将得到较好一些的性能。注意,分割是否很依赖于OS和分割大小。因此用不同的分割大小测试你的应用程序。见10.8使用你自己的基准。注意对分割的速度差异很依赖于参数,取决于你如何分割参数和磁盘数量,你可以得出以数量级的不同。注意你必须选择为随机或顺序存取优化。
为了可靠,你可能想要使用袭击RAID0+1(分割+镜像),但是在这种情况下,你将需要2*N个驱动器来保存N个驱动器的数据。如果你有钱,这可能是最好的选择。然而你也可能必须投资一些卷管理软件投资以高效地处理它。
一个好选择是让稍重要的数据(它能再生)上存在RAID0磁盘上,而将确实重要的数据(像主机信息和日志文件)存在一个RAID0+1或RAIDN磁盘上。如果因为更新奇偶位你有许多写入,RAIDN可能是一个问题。
你也可以对数据库使用的文件系统设置参数。一个容易的改变是以noatime选项挂装文件系统。这是它跳过更新在inode中的最后访问时间,而且这将避免一些磁盘寻道。
硬件问题
可利用硬件更有效地改善服务器的性能:
1、在机器中安装更多的内存。这样能够增加服务器的高速缓存和缓冲区的尺寸,使服务器更经常地使用存放在内存中的信息,降低从磁盘取信息的要求。
2、如果有足够的RAM使所有交换在内存文件系统中完成,那么应该重新配置系统,去掉所有磁盘交换设置。否则,即使有足以满足交换的RAM,某些系统仍然要与磁盘进行交换。
3、增加更快的磁盘以减少I/O等待时间。寻道时间是这里决定性能的主要因素。逐字地移动磁头是很慢的,一旦磁头定位,从磁道读块则较快。
4、在将数据重新放到不同设备之前,应该保证了解该系统的装载特性。如果在特定的物理设备上已经有了某些特定的主要活动,将数据库放到该处实际上可能会使性能更坏。例如,不要把数据库移到处理大量Web通信的Web服务器设备上。
5、在设置MySQL时,应该配置其使用静态库而不是共享库。使用共享库的动态二进制系统可节省磁盘空间,但静态二进制系统更快(然而,如果希望装入用户自定义的函数,则不能使用静态二进制系统,因为UDF机制依赖于动态连接)。
服务器参数的选择
服务器有几个能够改变从而影响其操作的参数(或称变量)。系统变量的当前值可以通过执行MySQLadminvaribles命令来检查,其中几个参数主要与查询有关,有必要在此提一下:
delayed_queue_size
此参数在执行其他INSERTDELAYED语句的客户机阻塞以前,确定来自INSERTDELAYED语句的放入队列的行的数目。增加这个参数的值使服务器能从这种请求中接收更多的行,因而客户机可以继续执行而不阻塞。
key_buffer_size
此参数为用来存放索引块的缓冲区尺寸。如果内存多,增加这个值能节省索引创建和修改的时间。较大的值使MySQL能在内存中存储更多的索引块,这样增加了在内存中找到键值而不用读磁盘块的可能性。
在MySQL3.23版及以后的版本中,如果增加了键缓冲区的尺寸,可能还希望用——init-file选项启动服务器。这样能够指定一个服务器启动时执行的SQL语句文件。如果有想要存放在内存中的只读表,可将它们拷贝到索引查找非常快的HEAP表。
相关文章

轻松玩转虚拟机套娃! 在Hyper-V中开启嵌套虚拟化的技巧
有办法在虚拟机中创建虚拟机吗?答案是肯定的,在虚拟机中运行虚拟机是可能的,我们将其称为嵌套虚拟化,下面我们就来看看详细操作方法2025-02-19
龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)
本文主要介绍了安装和配置AnolisOS 23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,具有一定的参考价值,感兴趣的可以了解一下2025-01-20
在处理文件拷贝复制到VMware虚拟机中的任务时,有多种方法可以实现文件的高效传输,使用这些方法,可以在不同的操作系统和环境下,实现文件的快速、安全迁移,详细请看下文2024-09-24
统信 UOS V20 桌面专业版(1070u1)正式发布,支持微信扫码登录、应用窗口缩略图,海量功能修复,详细请看下文介绍2024-08-08
怎么看自己IP地址? 不同的操作系统中查看路由器的IP地址的方法
在互联网上进行网络连接,每个设备都有一个唯一的标识,即IP地址,本文介绍了如何在不同平台上查找路由器的IP地址,包括Windows、Mac、iPhone、iPad、Android、Chrome OS和2024-07-16
很多人在使用虚拟机系统的时候,经常对虚拟机的运行速度不甚满意,甚至经常很恼火,虚拟机速度慢有很多原因,每个人需要根据自己的情况具体分析,本文根据笔者的使用经验将2024-02-21
使用虚拟机的时候,遇到了错误,想要把错误的代码或是运行情况复制粘贴到Windows的网上论坛区求助大神,该怎么操作呢?详细请看下文介绍2024-02-21
统信UOS V20桌面专业版(1060)11月更新发布(附更新内容汇总)
国产桌面操作系统统信 UOS V20 专业版(1060)11月更新发布,这是统信 UOS V20 专业版(1060)2023 年度最后一次更新,下面我们就来看看详细的更新内容2023-12-01
统信 UOS 将推 Rust 版 Bash 命令行工具 utshell(附下载地址)
统信 UOS 服务器版将于不久后推出 Rust 版 Bash,名为 utshell,旨在突破传统 Shell 所面临的安全限制,详细请看下文介绍2023-09-20
UOS开机进入busybox界面怎么办 uos无法进入桌面的解决办法
UOS开机进入busybox界面怎么办?UOS系统开机黑屏进入busybox界面了,该怎么办呢?下面我们就来看看uos无法进入桌面的解决办法2023-09-06









最新评论