保藏本站 保藏本站
真钱棋牌网主页 - 软件测验 - 常用手册 - 站长东西 - 技能社区
主页 > 数据库 > MySQL > 正文

主页 - PHP - 数据库 - 操作体系 - 游戏开发 - JS - Android - MySql - Redis - MongoDB - Win8 - Shell编程 - DOS指令 - jQuery - CSS款式 - Python - Perl

Access - Oracle - DB2 - SQLServer - MsSql2008 - MsSql2005 - Sqlite - PostgreSQL - node.js - extjs - JavaScript vbs - Powershell - Ruby

mysql优化的重要参数 key_buffer_size table_cache

MySQL服务器端的参数有许多,可是关于大多数初学者来说,很多的参数往往使得咱们手足无措,可是哪些参数是需求咱们调整的,哪些对服务器的功能影响最大呢?关于运用Myisam存储引擎来说,首要有key_buffer_size和table_cache两个参数。关于InnoDB引擎来说首要仍是以innodb_开端的参数,也很好辨认。

检查MySQL参数,能够运用show variables和show status指令检查,前者检查服务器静态参数,即在数据库发动后不会动态更改的值,比方缓冲区、字符集等。后者检查服务器的动态运转状况信息,即数据库运转期间动态改变的信息,比方锁,当时衔接数等。

key_buffer_size这个参数是用来设置索引块(index blocks)缓存的巨细,它被一切线程同享,严厉说是它决议了数据库索引处理的速度,尤其是索引读的速度。那咱们怎样才干知道key_buffer_size的设置是否合理呢,一般能够检查状况值Key_read_requests和Key_reads,份额key_reads / key_read_requests应该尽或许的低,比方1:100,1:1000 ,1:10000。其值能够用以i下指令查得:

mysql> show status like 'key_read%';
+-------------------+------------+
| Variable_name | Value |
+-------------------+------------+
| Key_read_requests | 3916880184 |
| Key_reads | 1014261 |
+-------------------+------------+
2 rows in set (0.00 sec)

3916880184/1024/1024=?M //单位为兆

检查图片

我的key_buffer_size值为:

检查图片

key_buffer_size=536870912/1024/1024=512M,

key_reads / key_read_requests=1014261: 3916880184≈1:4000,照上面来看,健康状况还行。

table_cache指定表高速缓存的巨细。每逢MySQL拜访一个表时,假如在表缓冲区中还有空间,该表就被翻开并放入其间,这样能够更快地拜访表内容。经过检查峰值时刻的状况值Open_tables和Opened_tables,能够决议是否需求添加table_cache的值。假如你发现open_tables等于table_cache,而且opened_tables在不断添加,那么你就需求添加table_cache的值了(上述状况值能够运用SHOW STATUS LIKE ‘Open%tables'取得)。留意,不能盲目地把table_cache设置成很大的值。假如设置得太高,或许会形成文件描述符缺乏,然后形成功能不稳定或许衔接失利。

检查图片

检查图片

open_tables表明当时翻开的表缓存数,假如履行flush tables操作,则此体系会封闭一些当时没有运用的表缓存而使得此状况值减小;

opend_tables表明从前翻开的表缓存数,会一向进行累加,假如履行flush tables操作,值不会减小。

在mysql默许装置状况下,table_cache的值在2G内存以下的机器中的值默许时256到512,假如机器有4G内存,则默许这个值是2048,但这决意味着机器内存越大,这个值应该越大,因为table_cache加大后,使得mysql对SQL呼应的速度更快了,不可避免的会发生更多的死锁(dead lock),这样反而使得数据库整个一套操作慢了下来,严重影响功能。所以平常保护中仍是要根据库的实践状况去作出判别,找到最适合你保护的库的table_cache值。

便是table_cache加大后碰到文件描述符不够用的问题,在mysql的装备文件中有这么一段提示:
引证
“The number of open tables for all threads. Increasing this value increases the number of file descriptors that mysqld requires.
Therefore you have to make sure to set the amount of open files allowed to at least 4096 in the variable "open-files-limit" in” section [mysqld_safe]”
说的便是要留意这个问题,一想到这儿,部分兄弟或许会用ulimit -n 作出调整,可是这个调整实践是不对的,换个终端后,这个值又会回到原始值,所以最好用sysctl或许修正/etc/sysctl.conf文件,一起还要在装备文件中把open_files_limit这个参数增大,关于4G内存服务器,信任现在购买的服务器都差不多用4G的了,那这个这个open_files_limit至少要增大到4096,假如没有什么特殊状况,设置成8192就能够了。

innodb_buffer_pool_size 这个参数和MyISAM的key_buffer_size有相似之处,但也是有不同的。这个参数首要缓存innodb表的索引,数据,刺进数据时的缓冲。为Innodb加快优化首要参数。  该参数分配内存的准则:这个参数默许分配只要8M,能够说是十分小的一个值。假如是一个专用DB服务器,那么他能够占到内存的70%-80%。这个参数不能动态更改,所以分配需多考虑。分配过大,会使Swap占用过多,致使Mysql的查询特慢。假如你的数据比较小,那么可分配是你的数据巨细+10%左右做为这个参数的值。

mysql主键的短少导致备库hang住
最近线上频频的呈现slave延时的状况,经排查发现为用户在删去数据的时分,因为表主键的主键的短少,一起删去条件没有索引,或或许删去的条件过滤

mysql同步问题之Slave推迟很大优化办法
一般来说,slave相对master推迟较大,其根本原因便是slave上的仿制线程没办法真实做到并发。简单说,在master上是并发形式(以InnoDB引擎为主)完结业务提

MySQL-tpch 测验东西扼要手册
tpch是TPC(TransactionProcessingPerformanceCouncil)安排供给的东西包。用于进行OLAP测验,以评价商业剖析中决议计划支持体系(DSS)的功能。它包含了一整套面向商业

本周排行

更新排行

强悍的草根IT技能社区,这儿应该有您想要的! 友情链接:b2b电子商务
Copyright © 2010 ystekkfj.com. All Rights Rreserved  京ICP备05050695号