如何减轻MySQL数据库的工作压力

当使用MySQL数据库的网站越来越多,其压力也会越来越大,那么如何对MySQL数据库进行解压呢?那就是优化!优化单个MySQL有三种方法。它们是:1。服务器物理硬件的优化;第二,编译优化MySQL安装;三、自身配置文件my.cnf 1的优化。服务器1的物理硬件的优化。磁盘寻道能力(磁盘I/O)是制约MySQL性能的最大因素之一。建议使用RAID1+0磁盘阵列,最好不要尝试RAID-5,因为MySQL在RAID-5磁盘阵列上的效率其实不是很快;2.CPU也很重要。对于MySQL应用,建议使用DELL R710,E5620 @2.40GHz(4核)* 2或者类似处理能力的东西。3、物理内存,物理内存对于一个使用MySQL的数据库服务器,服务器内存建议不小于2GB,建议使用4GB以上的物理内存。第二,建议采用编译安装的方法优化MySQL安装,使性能大幅提升。服务器系统建议使用64位Centos5.5。源码包的编译参数默认会生成Debgu模式的二进制代码,而Debug模式给MySQL带来的性能损失是比较大的,所以在编译要安装的产品代码时,一定不要忘记使用“-—without-Debug”参数来禁用Debug模式。如果两个编译参数-with-mysqld-LD flags和-with-client-LD flags设置为-all-static,您可以告诉编译器静态编译,并编译生成的代码以获得最高的性能。与动态编译的代码相比,使用静态编译的性能差距可能高达5%到10%。三、自身配置文件my.cnf的优化在解决了上面的服务器硬件约束之后,我们再来看看MySQL自身的优化是如何进行的。MySQL本身的优化主要是对其配置文件my.cnf中的参数进行优化调整,下面我们来介绍一些对性能影响较大的参数。下面我们就根据上面的硬件配置结合一个优化后的my.cnf来解释:#vim /etc/my.cnf下面只列出my.cnf文件中[mysqld]段的内容,其他段的内容对MySQL的运行性能影响不大,我们就忽略了。[mysqld]port = 3306 serverid = 1 socket =/tmp/MySQL。Sockskip-locking #避免MySQL的外部锁定,降低错误概率,增强稳定性。Skip-name-resolve#禁止MySQL解析外部连接。使用这个选项可以减少MySQL到DNS解析的时间。但是需要注意的是,如果开启了这个选项,所有的远程主机连接授权都必须使用IP地址,否则MySQL将无法正常处理连接请求!back_log = 384#back_log参数的值表示在MySQL暂时停止响应新请求之前,短时间内栈中可以存储多少个请求。如果系统在短时间内有许多连接,您需要增加该参数的值,该参数指定传入TCP/IP连接的监听队列的大小。不同的操作系统对此队列大小有自己的限制。试图将back_log设置为超过操作系统的限制将是无效的。默认值为50。Linux系统建议设置为小于512的整数。Key _ buffer _ size = 384m # Key _ buffer _ size指定用于索引的缓冲区的大小,增加它可以获得更好的索引处理性能。对于内存约为4GB的服务器,该参数可以设置为256M或384M。注意:将该参数值设置得太大会降低服务器的整体效率!max _ allowed _ packet = 4m thread _ stack = 256k table _ cache = 614k sort _ buffer _ size = 6m #可用于查询排序的缓冲区大小。注意:与该参数对应的分配内存是每个连接专用的。如果有100个连接,实际分配的总* * *排序缓冲区大小为100 × 6 = 600MB。因此,对于内存约为4GB的服务器,建议设置为6-8M。Read_buffer_size = 4M#可用于读取查询操作的缓冲区大小。和sort_buffer_size一样,这个参数对应的分配内存也是每个连接独占的。Join_buffer_size = 8M#可用于联合查询操作的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每个连接独占的。myisam _ sort _ buffer _ size = 64m table _ cache = 512 thread _ cache _ size = 64 query _ cache _ size = 64m #指定MySQL查询缓冲区的大小。你可以从MySQL控制台观察到,如果Qcache_lowmem_prunes的值很大,说明经常缓冲不足;如果Qcache_hits的值非常大,则表明查询缓冲区的使用非常频繁。如果值很小,会影响效率,可以考虑不使用查询缓冲区。Qcache_free_blocks,如果这个值很大,说明缓冲区有很多碎片。tmp _ table _ size = 256 max _ connections = 768 #指定MySQL允许的最大连接进程数。如果访问论坛时经常不正确地提到太多连接,则需要增加该参数的值。max _ connect _ errors = 1000 wait _ time out = 10 #指定请求的最大连接时间,对于内存约为4GB的服务器,可以设置为5-10。Thread_concurrency = 8#该参数的值是服务器的逻辑CPU数*2。这种情况下,服务器有两个物理CPU,每个物理CPU都支持H.T .超线程,所以实际值是4 * 2 = 8;这也是目前双四核主流服务器配置。Skip-networking#打开此选项可以完全关闭MySQL的TCP/IP连接模式。如果WEB服务器通过远程连接访问MySQL数据库服务器,不要打开这个选项!否则将无法正常连接!Table_cache=1024#物理内存越大,设置越大。默认值为2402。调整为512-1024,最好的innodb _ additional _ mem _ pool _ size = 4m #默认为2m innodb _ flush _ log _ at _ Trx _ commit = 1 #。设置为0意味着要等到innodb_log_buffer_size的行满了之后再统一存储。默认值为1 innodb _ log _ buffer _ size = 2m #。默认值为1 innodb _ thread _ concurrency = 8 #。您可以将它设置为服务器中有多少CPU就有多少。建议使用默认值8key_buffer_size=256M#。默认值是218。调整为128,最好的tmp_table_size=64M#默认为16M。调至64-256,read_buffer_size=4M#默认为64k read _ rnd _ buffer _ size = 16m #默认为256kport _ buffer _ size = 32m #默认为256 kthread _ cache _ size = 120 #默认值为60query_cache_size=32M,其他很多情况需要具体分析。1.如果Key_reads太大,应该在my.cnf中增加Key_buffer_size,并保持Key_reads/Key_read_requests至少为1/100,越小越好。2.如果Qcache_lowmem_prunes非常大,请增加Query_cache_size的值。通过参数设置进行性能优化,或多或少能提高性能,但效果未必突出。