配置文件中具体修改的内容是什么?如果面试官问你,你应该怎么回答?想一想,你正坐在一个房间里。MySQL服务器的性能优化,一般有两个方向可以考虑,一个是服务器硬件,另一个是MySQL本身的my.cnf配置文件。服务器的磁盘、CPU、内存都是需要考虑的因素。1、磁盘的I/O能力,即寻道能力。目前的SCSI高速转速是7200rpm。如果用户数增加,对磁盘的压力就会太大。如果网站每天的PV是150w,那么一般的配置是不能满足这个需求的。这时候限制就不小了,需要磁盘阵列,但是我们应该选择哪种方案呢?RAID-0+1,不要选择RAID5,这个选项达不到你想要的结果。具体原因,请看下文比较磁盘阵列的异同。2.CPU和处理器能力这里就不细说了。3、物理内存,物理内存必须在2G以上,有的还要4G。更不用说更高级的了。mysql修改配置文件。my.cnf这里说的是mysqld字段,其他字段作用不大。[mysqld]port=3306serverid=1socket=/tmp/mysql.sockskip-locking#避免MySQL的外部锁,减少出错机会,增强稳定性。skip-name-resolve#ForbidMySQLtoperformDNSresolutiononexternalconnections使用该选项可以消除MySQL进行DNS解析的时间。但是需要注意的是,如果启用该选项,所有远程主机连接授权必须使用IP地址方式,否则MySQL将无法正常处理连接请求!back_log=384#back_log参数的值表示在MySQL暂时停止响应新请求之前,可以在栈中存储多少个请求。如果系统在短时间内有很多连接,则需要增大该参数的值,该参数指定传入TCP/IP连接的侦听队列的大小。不同的操作系统对该队列的大小有自己的限制。尝试将back_log设置为高于您的操作系统限制将无效。默认值为50。对于Linux系统,建议设置为小于512的整数。key_buffer_size=256M#key_buffer_size指定用于索引的缓冲区大小,增加它可以获得更好的索引性能。对于内存在4GB左右的服务器,这个参数可以设置为256M或者384M。注意:如果该参数的值设置过大,会降低服务器的整体效率!max_allowed_pa??cket=4Mthread_stack=256Ktable_cache=128Ksort_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=64Mtable_cache=512thread_cache_size=64query_cache_size=64M#指定MySQL查询缓冲区的大小。在MySQL控制台可以观察到,如果Qcache_lowmem_prunes的值很大,说明缓冲区经常不足;如果Qcache_hits的值很大,说明查询缓冲区使用非常频繁。如果该值较小,会影响效率,那么可以考虑不使用查询缓冲区;Qcache_free_blocks,如果值很大,说明缓冲区中有很多碎片。tmp_table_size=256Mmax_connections=768#指定MySQL允许的最大连接进程数。如果在访问论坛时经常出现TooManyConnections错误消息,则需要增大此参数的值。max_connect_errors=10000000wait_timeout=10#指定一次请求的最大连接时间,4GB左右内存的服务器可以设置为5-10。thread_concurrency=8#该参数的值为服务器的逻辑CPU个数*2本例中服务器有2个物理CPU,每个物理CPU都支持H.T超线程,所以实际值为4*2=8skip-networking#启用该选项可以完全关闭MySQL的TCP/IP连接模式。如果WEB服务器通过远程连接访问MySQL数据库服务器,则不要启用该选项!否则将无法正常连接!table_cache=1024#物理内存越大,设置越大。默认是2402,调整为512-1024***innodb_additional_mem_pool_size=4M#默认是2minnodb_flush_log_at_trx_commit=1#设置为0就是等到innodb_log_buffer_size队列满了再统一存储,默认是1innodb_log_buffer_size=2M#的defaultis1minnodb_thread_concurrency=8#你的服务器CPU有几个,设置成几个,建议使用默认一般是8key_buffer_size=256M#默认是218,调整为128***tmp_table_size=64M#默认是16M,调整为64-256,最挂read_buffer_size=4M#默认64Kread_rnd_buffer_size=16M#默认256Ksort_buffer_size=32M#默认256Kthread_cache_size=120#默认60query_cache_size=32M※很多情况值得注意需要具体情况具体分析。如果Key_reads过大,需要增加my.cnf中的Key_buffer_size,Key_reads/Key_read_requests至少保持1/100,越小越好。其次,如果Qcache_lowmem_prunes很大,需要增大Query_cache_size的值。
