当前位置:首页 > 日记 > 正文

MySQL教程教程:MySQL性能优化的缓存参数优化

MySQL教程教程:MySQL性能优化的缓存参数优化
数据库是一个IO密集型应用程序,其主要职责是管理和存储数据。我们知道,从内存中读取数据库的时间是微秒级,而从硬盘读取IO是毫秒级。两者之间的差异是3个数量级,因此,为了优化数据库,需要优化的第一步是IO,尽可能地将磁盘IO转换成内存IO:

1。query_cache_size / query_cache_type(全球)
查询缓存的作用在整个MySQL实例,它主要用于MySQL,结果集缓存,结果集的SQL语句执行,所以它只能用于SELECT语句。我们打开查询缓存功能时,MySQL收到请求后一个SELECT语句,如果语句满足缓存查询要求(没有明确说明使用查询缓存,不允许或明确申明需要使用查询缓存,MySQL)将直接SELECT语句接受散列为一个字符串的方式设定的哈希算法,然后找到查询缓存已经直接缓存,说,如果你已经在缓存中,选择请求将直接返回数据,从而省略了随后的步骤,如解析SQL语句、优化优化器和向存储引擎请求数据等,极大地提高了性能。

当然,查询缓存也有一个致命的缺陷,那就是,当表的任何数据有任何变化时,它将导致所有引用语句的SELECT语句在查询缓存缓存数据中失效,因此,当我们的数据变化非常频繁时,查询缓存的使用可能不值得。

查询缓存的使用需要多个参数匹配。最关键的是query_cache_size和query_cache_type。前者建立缓存结果集的内存大小,后者是建立在什么情况下使用查询缓存。在过去的经验,如果MySQL不是用来缓存数据基本不变,query_cache_size一般256MB大小合适。当然,这可以通过计算查询缓存命中率调整(qcache_hits /(qcache_hits + qcache_inserts)×100)。query_cache_type可设置为0(关闭)、1(上)或2(DEMOND),分别,没有查询缓存的使用,除了明确要求不使用查询缓存(sql_no_cache)所有选择查询缓存,只使用查询缓存显示要求(sql_cache)。

二,binlog_cache_size(全球)
binlog缓存用于打开二进制日志(binlog)记录环境的功能。这是一个内存区专为MySQL来提高binlog记录效率,它binlog临时缓存数据在很短的时间。

一般来说,如果在我们的数据库中没有大的交易,写的不是特别频繁,2mb 4MB是一个合适的选择。但如果数据库很大,写作量较大,可适当调整binlog_cache_size。同时,我们可以用binlog_cache_use和binlog_cache_disk_use分析是否binlog_cache_size集是不够的,无论是大量的binlog_cache的临时文件缓存(binlog_cache_disk_use)因为内存不足。

三、key_buffer_size(全球)
Key Buffer是最熟悉的一个MySQL缓存参数,特别是当MySQL没有更改默认存储引擎,很多朋友可能会发现在内存参数的默认mysql的配置文件是最大的这个参数,key_buffer_size参数用于设置用于在MyISAM存储引擎的索引文件缓存的内存面积的大小。如果我们有足够的内存,缓存区是最能够储存我们所有的MyISAM引擎的表的所有索引,从而提高性能尽可能。

此外,当我们使用MyISAM存储,还有重要的一点要注意。由于MyISAM引擎的特点,他只缓存索引块为记忆而不是缓存表的数据库块。因此,我们的SQL必须过滤条件的指标尽可能使缓存有助于提高查询效率。

四、bulk_insert_buffer_size(线程)
key_buffer_size一样,这个参数也只能在MyISAM存储引擎,这是用来缓存临时缓存数据时数据批量插入。当我们使用下面的数据写的声明,我们将使用这个内存区域来缓存批量结构数据帮助批量写入到数据文件。

复制代码代码如下:插入…选择…

插入……值(…),(…)(…)…

LOAD DATA INFILE…到…(非空表)

五、innodb_buffer_pool_size(全球)
当我们使用InnoDB存储引擎,innodb_buffer_pool_size参数可能会影响我们的表现的一个关键参数,它用来设置内存区域的大小缓存InnoDB索引和数据块,当然key_buffer_size参数,类似于MyISAM存储引擎,将更像Oracle db_cache_size.in短,当我们使用InnoDB表,所有返回的数据或用于数据处理的任何索引块将在该存储器访问。

对于MyISAM和key_buffer_size引擎,innodb_buffer_pool_size设置一块内存区域和最大InnoDB存储引擎的需求规模,对InnoDB存储引擎的性能直接相关,所以如果我们有足够的内存,这个参数可以被设置为玩够了,尽可能把对InnoDB的缓存区的指标和数据,直到所有。

我们可以计算出缓存命中率(innodb_buffer_pool_read_requests - innodb_buffer_pool_reads) / innodb_buffer_pool_read_requests×100%,根据命中率innodb_buffer_pool_size参数优化。

六、innodb_additional_mem_pool_size(全球)
我们经常调整的参数不多,很多人都使用默认值,可能很多人不该parameter.innodb_additional_mem_pool_size InnoDB功能太熟悉设置的存储引擎的大小来存储数据字典信息和一些内部数据结构的内存空间,所以当我们有了一个MySQL数据库对象的实例非常多,是需要调整的参数的大小以确保所有的数据可以存储在内存提高访问效率。

参数大小是否足够还很容易知道,因为当MySQL太小时,警告将信息记录到数据库的错误日志中。这时,您将知道参数的大小应该被调整。

七、innodb_log_buffer_size(全球)
这是由InnoDB存储引擎的事务日志所使用的缓冲区。类似于Binlog Buffer InnoDB,写入事务日志时,为了提高性能,还写信息给Innofb Log Buffer第一,当相应的条件满足innodb_flush_log_trx_commit参数设置(或日志缓冲区满),会写到日志文件(或同步到磁盘),最大内存空间,它可以用可设定的innodb_log_buffer_size参数。
注:本innodb_flush_log_trx_commit参数对Innodb日志写入性能的一个非常关键的影响。该参数可以设置为0, 1,和2,这说明如下:

0:日志缓冲区数据将以每秒一次的频率写入日志文件,并在文件系统同时对磁盘进行同步操作,但每个事务的提交不会触发日志文件系统中的任何日志缓冲区来刷新或刷新磁盘操作;
1:在每次事务时,日志缓冲区中的数据将被写入日志文件,并触发文件系统与磁盘的同步;
2:事务提交触发日志缓冲区刷新到日志文件,但它不会触发磁盘文件系统与磁盘的同步。此外,每秒将有一个文件系统到磁盘同步。

此外,文件还提到,MySQL机制同步每秒一次这些设置可能无法完全保证每一秒的精度,而且还取决于进程调度的问题。事实上,InnoDB可以满足参数设定值代表正常恢复的意义或不同操作系统的文件系统和磁盘本身的限制,有时并没有真正完成会告诉mysqld已完成磁盘同步。

八、innodb_max_dirty_pages_pct(全球)
此参数与上面的参数是不同的,他不是用于数据高速缓存的内存大小的一个参数设置,可用于控制InnoDB缓冲池可以不脏页率写入数据文件(已固定而不是写入数据文件的脏数据存储器)的大。比,从内存到磁盘的写操作会相对减少,所以写操作的磁盘IO可以一定程度的降低。

然而,如果这个比值太大,时间后数据库死机重启可以很长,因为会有大量的交易数据需要从日志文件恢复和写入数据文件。同时,过大的比例也可能的比例设定上限的原因冲洗过度操作,这导致了一个高性能的波动。

以上参数是MySQL中减少磁盘物理IO的主要参数,对MySQL的性能起着至关重要的作用。

优化实例:
根据mcsrainbow朋友的请求,这是从以往经验获得的相关参数的建议值:

1.query_cache_type:如果你一直使用InnoDB存储引擎,它是推荐的是0。如果你使用MyISAM存储引擎,它是推荐的是2。同时,在SQL语句显式控制哟,你GQuery缓存。
2.query_cache_size:是根据命中率调整(qcache_hits /(qcache_hits + qcache_inserts)* 100)。一般不推荐。256mb可能几乎相同。大配置静态数据可以适当调整。
3.binlog_cache_size:一般环境2mb 4MB是一个合适的选择。更大的数据库和大型交易数据库可以适当放大,但32mb不推荐。
如果4.key_buffer_size:不使用MyISAM存储引擎,16mb足以缓存系统表的信息,如果你使用MyISAM存储引擎把所有指标的记忆尽可能多的,越大越好,越好越好。
如果5.bulk_insert_buffer_size:经常需要批量插入特殊指令插入数据(以上),可以适当扩大到16MB到32MB。不建议增加8mb。
6.innodb_buffer_pool_size:如果你不使用InnoDB存储引擎,你可以调整这个参数。如果你想使用它,如果你想使用的内存,可以存储所有InnoDB数据文件存储尽可能多的,而且是越大越好。
7.innodb_additional_mem_pool_size:一般数据库的建议进行调整~ 16mb 8MB。如果有太多的表,它可以调整为32MB,并可根据错误日志中的信息来判断。
对8.innodb_log_buffer_size默认:是1MB,可适当增加到4MB 8MB如果系统频繁。当然,如前所述,这个参数实际上是其他冲洗参数有关。一般来说,不建议超过32mb
9。innodb_max_dirty_pages_pct:,根据过去的经验,重新启动和恢复数据的速度会变慢,几乎不能接受的如果是在1gb。因此,不建议超过1GB / innodb_buffer_pool_size(GB)* 100.of课程,如果你能忍受漫长的启动时间和想减少内存刷新,你可以调整这个值为90,但不建议超过90。
注:以上范围只是一些优化,根据以往经验所遇到的场景数据库i值,不一定适用于所有场景,所以在实际优化分析过程中我们还需要不断调整,也欢迎通过邮件沟通优化或架构技术与我联系。共同学习。

相关文章

Linux使用CP报告错误的文本文件。

Linux使用CP报告错误的文本文件。

错误,文本文件,报告,电脑软件,Linux,注释:一位同事问我:当使用CP命令时,如果发现要覆盖的文件(二进制可执行文件)正在运行,CP会出错。CP命令如何知道文件正在执行 我想到的第一件事就是ioctl可以检查文件。不幸的是,我猜错了。我看了看源代码,原来,…

Linux的命令行输出进度条

Linux的命令行输出进度条

进度条,命令,行输出,电脑软件,Linux,点评:Linux的一些命令,如wget,它显示一个进度条。最后,我知道这样得到的效果。 复制代码代码如下所示: ($ i = 0;$ i printf(进展:{ % 50岁} %1 R usleep(1000×100); } ; 已完成。; 每次结束时都使用 新的线和R是…

PHP的IP转换的详细解决方案,塑造(ip2

PHP的IP转换的详细解决方案,塑造(ip2

转换,解决方案,详细,电脑软件,PHP,如何通过IP网络地址协议地址将四个字段转换成整数有PHP这样的函数ip2long。如 复制代码代码如下所示: 回声ip2long(10.2.1.3 ); > 我们会得到它的 一亿六千七百九十万三千四百九十一 这是这是怎么计算的,现…

在假日服务的交付中,许多快递被暂停

在假日服务的交付中,许多快递被暂停

服务,暂停,交付,假日,快递,在高价格交货和不交货之间,人们应该选择什么昨天,记者采访了很多次,虽然国家邮政局明确表示没有关闭快递公司的快递员,一些已经不再接受他们,而仍在接受它的公司宣布他们将在春节期间提高自己的价格。其中,顺丰(微博)表示…

spysub是spysub.exe-过程

spysub是spysub.exe-过程

过程,电脑软件,spysub,exe,评论:详细的介绍了spysub.exe工艺文件 进程文件:spysub或spysub.exe 进程名称:spysubtract 过程类别:安全风险的过程 英文描述: spysub.exe是一个spysubtract从intermute相关过程。spysubtract,intermute。,它也被称为…

设置NAT了UbuntuVPSpptpd问题

设置NAT了UbuntuVPSpptpd问题

设置,电脑软件,NAT,UbuntuVPSpptpd,Ubuntu在pptpd建立PPTP VPN服务器的主题已被注销的人。但是由于VPS的不同配置,通过VPN网络实现它的方式有不同的看法。 基本的PPTP配置很容易把。如果你有问题,你可以给我留言或写信给我。 apt-get insta…

解析SQL语句中的替换和插入之间的

解析SQL语句中的替换和插入之间的

语句,替换,区别,电脑软件,SQL,替换的运行非常类似于插入,只有一个例外。如果表中的旧记录与主键或唯一索引所使用的新记录具有相同的值,则在插入新记录之前删除旧记录。 注意,除非表有主键或唯一索引,否则使用替换语句是没有意义的。这个语句将…

数据库一般连接方式的详细解决方案

数据库一般连接方式的详细解决方案

连接,解决方案,数据库,方式,详细,每个数据的存取都是由它自己的通信协议来完成的,包括不同的接口调用和参数传递,在同一个程序中,我们需要使用不同的数据库信息。按照正常情况,我们需要编写不同的数据库连接方式,比如在程序中编写多个简化的数据…

Win7Aero效果的设置和小窗口颜色调

Win7Aero效果的设置和小窗口颜色调

调整,设置,颜色,窗口,效果,点评:航空的影响,我相信你不熟悉的话,个人感觉还是不错的,但有些用户将无法使用奥科效果因为显卡的旧版本。这里我们介绍了空气的设置和窗户的颜色。有兴趣的朋友可以参考一下。 Windows7的Aero效果,相信大家对他印象…

PHP应用JSON技巧

PHP应用JSON技巧

技巧,电脑软件,PHP,JSON,PHP json_decode返回数据JS处理 在PHP json_decode,回到前台数据如:encode_str = { { 绿色):10、大小:5、卒中:12 } 然后JS通过eval(obj = + + encode_str + ); JSON数据可以被实例化为对象,并且数据可以直接obj.green获得。…

原因和解决方案,不能安装win7下

原因和解决方案,不能安装win7下

解决方案,安装,原因,电脑软件,点评:Windows 7系统中,有一些原因导致办公室、软、QQ等软件无法安装,只能使用绿色版。安装安装时提示Windows安装服务停止的信息。该如何解决 问:Windows 7系统,我不知道是什么原因造成Office、软、QQ等软件无法安…

对muamgr.exe-muamgr的作用是什么

对muamgr.exe-muamgr的作用是什么

作用,电脑软件,muamgr,exe,点评:muamgr.exe是microangelo 5。X软件相关程序驻留在快速访问其软件系统托盘 进程文件:muamgr或muamgr.exe 进程名称:Eclipsit MicroAngelo 过程类别:安全风险的过程 英文描述: muamgr.exe是一个过程,属于microange…