成为MySQL DBA博客

  • 时间:
  • 浏览:1
  • 来源:彩神官网

对于具有24到3一一五个多 内核和128GB内存的MySQL数据库服务器,处置多达20 - 150个一起去运行的连接和多达数百个一起去连接的客户端,当我们歌词 可可不可不可以 说10 - 15GB的内存应该足够了。否则你想保持安全一段话,20GB应该是足够的。一般来说,除非您知道数据库的行为,否则建立理想的缓冲池大小是一一五个多 反复试验的过程。在编写的那我,InnoDB缓冲池需用一一五个多 动态变量,所以需用重新启动。否则,在“太小”方面犯错是比较安全的。随着Oracle引入动态分配的缓冲池,它将随着MySQL 5.7而改变,这将使调整更容易。

调整MySQL配置是整本书的一一五个多 主题,无法在一篇博客文章中将其覆盖。当我们歌词 将尝试在这里提到其他更重要的变量。

接下来,愿意看了看磁盘调度器。CFQ(通常是默认的CFQ)针对桌面工作负载进行了调整。这对于数据库工作负载来说效果不佳。大多数请况下,否则将其更改为noop或截止日期,会看了更好的结果。你这名 个 调度器之间几乎很难有哪些区别,当我们歌词 发现基于SAN的存储Noop略胜一筹(SAN通常在处置工作负载方面更好,否则它知道更多关于底层硬件以及与操作系统相比实际存储在缓存中的内容)。

详细地持久性显然是一件好事,但它的价格非常高 - I / O负载要高得多,否则在每次提交那我,刷新操作需用趋于稳定。否则,在其他请况下,降低耐用性和在其他条件下承担数据丢失的风险是非常受欢迎的。对于主 - 多个从属设置来说,这是真实的,通常请况下,在重建过程中一一五个多多 从属在崩溃那我通常是详细正确的,否则其余要素可可不可不可以 轻松处置工作量。Galera群集也是很难: 整个群集作为单个实例工作,即使一一五个多 节点崩溃并丢失数据。

现在所以 那我。正如当我们歌词 在日后结速了了时所提到的那样,调整有有哪些设置否则不必使MySQL数据库的时延变得变快 。但通过调整查询,您有否则加快你这名 时延。但你沒有们对整体表现仍然有明显的影响。祝你好运,调整工作!

本文来自云栖社区媒体媒体合作伙伴“老叶茶馆”,了解相关信息可可不可不可以 关注“老叶茶馆”微信公众号

那我与内存相关的设置,确保你将NUMA详细设置为关闭。愿意通过修改启动脚那我启动MySQL: numactl --interleave=all $command ,此设置可可不可不可以 平衡NUMA节点之间的内存分配,并最大限度地减少其中一一五个多 节点内存不足英文的否则。

本文作者:田帅萌

内控 争用处置

I / O相关的设置

innodb_file_per_table 你这名 变量决定InnoDB表是在单独的表空间(设置为1)还是在共享表空间(设置为0)时创建。当每个InnoDB表需用一一五个多 单独的表空间时,管理MySQL会容易得多。相似,对于单独的表空间,可可不可不可以 通过删除表或分区来轻松回收磁盘空间。共享表空间不起作用 - 回收磁盘空间的唯一法律措施是转储数据,清理MySQL数据目录,否则重新加载数据。显然,这并不方便。

那我对MySQL性能有重大影响的变量是innodb_flush_log_at_trx_commit,这是InnoDB持久性的延伸。默认:

当事人面,vm.dirty_ratio是可用于缓存脏页面的内存的硬限制。否则否则写入活动较高,后台程序运行无法快速刷新数据以跟上新的修改,则可可不可不可以 达到该目的。一旦达到vm.dirty_ratio,所有的I/O活动都被锁定,直到脏页被写入磁盘,这里的默认设置通常是40%(在你的发行版中否则会有所不同,但对于大容量内存的主机来说你这名 数字是相当高的)。假设对于一一五个多 128GB的实例,即使您使用的是快速固态硬盘,它也最少 51GB,这否则会在相当长的时间内锁定您的I/O。

MySQL使用比InnoDB缓冲池等多个缓冲区,它们是由变量控制:join_buffer_sizesort_buffer_size的值,read_buffer_sizeread_rnd_buffer_size。有有哪些缓冲区是按会话分配的(连接缓冲区除外,每个JOIN分配一一五个多 缓冲区)。当我们歌词 否则看了MySQL将有有哪些缓冲区设置为数百兆字节 —通过增加join_buffer_size,愿意期望JOIN执行得变快,更自然。

您否则否则听说过将InnoDB缓冲池设置为系统总内存的150%的经验法则。当8GB的内存是巨大的那我,它是有效的,但现在需用那我。在计算InnoDB缓冲池大小时,需用考虑其余MySQL的内存要求(假设MySQL是服务器上唯一运行的程序运行)。相似,当我们歌词 在这里谈论每个连接,甚至每个查询缓冲区,如连接缓冲区或内存中临时表的最大区间,一起去你还需用考虑允许的最大连接数(更多的连接原应更多的内存使用量)。

愿意通过安装一一五个多 新的包(用于jemalloctcmalloc)来打上去新的分配器,否则在[mysqld_safe]中使用LD_PRELOAD(即导出LD_PRELOAD =“/ usr / lib / libtcmalloc_minimal.so.4.1.2”)或malloc-lib变量要素my.cnf

其他否则对其他工作负载有重大影响的变量是innodb_io_capacityinnodb_io_capacity_maxinnodb_lru_scan_depth。有有哪些变量定义了InnoDB的后台程序可可不可不可以 完成的磁盘操作的数量,相似,从InnoDB缓冲池中刷新脏页面。默认设置是保守的,大多数请况下需用好的。否则您的工作量非常大,您否则需用调整有有哪些设置,看看您是需用阻止InnoDB详细使用您的I / O子系统。否则您拥有快速存储,则尤其很难:SSD或PCIe SSD卡。

(1)确保数据是安全的,即使数据库服务器被杀死 - 在任何请况下需用会丢失数据。其他设置(2和0)表示,整个数据库服务器否则会崩溃;

MySQL查询缓存也老会 被“调整” 你这名 缓存存储SELECT一段话的散列及其结果。一一五个多多 问题图片图片 :第一一五个多 问题图片图片是,缓存否则会频繁刷新,否则对给定的表执行任何DML,则将从查询缓存中删除与此表相关的所有结果,这严重影响了MySQL查询缓存的实用性。第五个问题图片图片是查询缓存受互斥体保护,访问被序列化。对于任何具有较高并发性的工作负载来说,这是一一五个多 重大的缺点和限制。否则强烈建议通过详细禁用MySQL查询缓存来“调整”MySQL缓存。愿意通过设置`query_cache_type来完成关闭。我我觉得,在其他请况下,它否则有其他用处,但大多数请况下并不很难。而需用依靠MySQL查询缓存,您还可可不可不可以 利用任何其他内控 系统(如Memcached或Redis)来缓存数据。

InnoDB持久化

有哪些是缓冲池,为有哪些很难重要?缓冲池是InnoDB用来缓存数据的内存。它用于缓存读取和写入每个否则被修改的页面,首先需用加载到缓冲池,否则它变成了一一五个多 脏页面,即一一五个多 否则被修改的页面,否则还很难被刷新到表空间。正如愿意想象的,那我的缓冲区对于数据库正确执行非常重要。“内存/磁盘”比率越差,你的工作负载将越受限于I / O,I / O约束的工作量往往是缓慢的。

需用检查内存和文件系统缓存处置法律措施相关的操作系统设置。一般来说,当我们歌词 希望保持vm.dirty_ratiovm.dirty_background_ratio都为低。

其他设置

您否则要查看的另一组设置是控制MySQL应创建的给定内控 的几次个实例/分区的变量。当我们歌词 在这里讨论变量:innodb_buffer_pool_instancestable_open_cache_instancesmetadata_locks_hash_instancesinnodb_adaptive_hash_index_partitions。有有哪些选项清楚表明,相似,单个缓冲池或单个自适应散列索引可成为具有高并发性的工作负载的争用点时引入的。一旦你发现其中一一五个多 内控 成为一一五个多 痛点(当我们歌词 讨论了怎么在早期的博客文章中捕捉到有有哪些请况)愿意想调整变量,但不幸的是,这里很难经验法则。建议单个缓冲池实例的大小最少 应为2GB,否则对于较小的缓冲池,你否则需用坚持你这名 限制。在其他变量的请况下,否则当我们歌词 讨论的是争用问题图片图片,很难你否则会增加有有哪些数据内控 的实例/分区的数量,否则很难关于怎么实现的规则,否则您需用观察工作量并决定此时争用不再是问题图片图片。

InnoDB缓冲池

二、OS系统优化

InnoDB的重做日志的大小也你沒有否则愿意看的东西。它由innodb_log_file_sizeinnodb_log_files_in_group管理。默认请况下,当我们歌词 在一一五个多 组中一一五个多多 日志,每个大小约为150MB。有有哪些日志用于存储写入事务,并按顺序写入。这里的主要问题图片图片是,MySQL必须在日志中用完空间,否则否则日志几乎已满,则需用停止整个活动并专注于将数据刷新到表空间。当然,这对程序运行来说是非常糟糕的,否则在这段时间内很难写入操作。这你沒有们上方讨论的InnoDB I / O设置非常重要的原应之一。当我们歌词 也可可不可不可以 通过改变innodb_log_file_size来增加重做日志的大小。经验法则是将它们设置得足够大,以覆盖最少 1小时的写入。

数据库服务器需用CPU、内存、 磁盘和网络可不可不可以运行,了解有有哪些资源对于DBA来说非常重要,否则任何的超载行为需用日后成为限制因素,原应数据库服务器性能不佳。DBA的主要任务所以 调整系统和数据库的配置,处置可用资源的过渡利用和利用不足英文。

说到磁盘,innodb_flush_method是那我你否则愿意看的设置。通过将此设置从默认的fdatasync切换到O_DIRECT,当我们歌词 看了了可见的性能提升。你这名 增益在使用BBU备份的硬件RAID控制器的设置中清晰可见。当事人面,当涉及到EBS卷时,当我们歌词 否则使用`O_DSYNC看了了更好的结果。在这里进行标记对于了解在特定请况下哪种设置更好是非常重要的。

(2)则否则会丢失多达一一五个多 事务,否则否则mysqld被终止,则否则会丢失多达一一五个多 事务。

三、MySQL配置调整

现在当我们歌词 正式谈论磁盘,通常文件系统的最佳选用是EXT4或XFS (过去这否则改变了几次),否则您愿意充分利用I / O子系统,很难你否则需用对设置进行其他测试。无论使用哪种文件系统,都应该禁用MySQL卷的noatimenodiratime (对元数据的写入越少,整体开销就越低)。

原文发布时间为:2017-12-23

内存分配器也可可不可不可以 对MySQL性能产生重大影响。愿意选用不同的内存分配器来使用MySQL。它们的性能在版本和工作负载之间有所不同,否则必须在执行了详细地测试后,可不可不可以选用在你的环境中哪个版本效果最好。最常见的选用是默认的glibc malloctcmallocjemalloc

默认请况下,有有哪些变量具有相当小的值,这实际上是有意义的 —当我们歌词 否则看了,低至256K的设置否则比像4M那我的较大值快得多。很难说出你这名 行为的确切原应,很否则其富含所以。可可不可不可以 肯定的是,Linux改变了内存分配的法律措施。最多256KB使用malloc()。对于更大的内存块 - mmap(),重要的是要记住,当涉及到有有哪些变量时,任何变化都需用以基准为后盾,以确认新的设置我我觉得是正确的。否则,你否则会降低它的表现,而需用增加它。

首先,性能优化是一一五个多 持续的过程,安装MySQL通常是调整操作系统和数据库配置的第一步。而数据库是一一五个多 动态系统,这是一一五个多 永无止境的故事。你的MySQL数据库起初否则是CPU绑定的,否则你有足够的内存和很少的数据。随着时间地推移,它否则会改变,磁盘访问否则会变得更加频繁。正如愿意想象的那样,I / O是主要关心的服务器配置,看起来不同于所有数据都适合内存的服务器的配置。此外,您的查询组合需用日后随时间而改变,否则访问模式或MySQL中可用功能的使用(如自适应哈希索引)也会随之改变。

#当事人强烈建议注释使用row格式

一、简介

还有其他其他设置否则需用考虑,其他可可不可不可以 在设置时以最有效的法律措施应用,其他可可不可不可以 动态更改。有有哪些设置不必对性能产生重大影响(有时影响需用日后是负面影响),但记住它们仍然有点硬要。

skip_name_resolve 此变量决定算不算在作为传入连接源的主机上执行DNS查找。否则启用,FQDN可作为主机在MySQL授权中使用。否则需用,必须用IP地址定义的用户可不可不可以工作。启用DNS查找的问题图片图片是,它否则会引入额外的延迟。DNS服务器也可可不可不可以 停止响应(否则崩溃或网络问题图片图片),在你这名 请况下,MySQL将必须接受任何新的连接。

#注释:当事人建议还是设置为 5-10左右

vm.dirty_background_ratio 是系统内存的百分比,在后台刷新过程日后结速了了那我,可可不可不可以 用来缓存已修改的(“脏”)页面,原应需用做更多的工作来清理缓存。

max_connections: 一方面你想保持足够高以处置任何传入的连接;当事人面,否则大多数服务器无法一起去处置数百个或更多的连接,否则您又不希望太高。处置此问题图片图片的三种法律措施是在程序运行端实现连接池,否则使用像HAProxy那我的负载平衡器来限制负载。

InnoDB重做日志

log_bin 否则您正在使用MySQL一键复制,则需用启用二进制日志。即使您不使用它们,保留它们也是非常方便的,否则它们可可不可不可以 用来进行时间点恢复。

一般来说,当我们歌词 希望看了你这名 个 变量设置为低的数值:5 - 10%。

查询缓存

那我重要的系统变量是vm.swappiness。一方面,在使用MySQL的那我,当我们歌词 愿意使用交换,除非是急需,将InnoDB缓冲池交换到磁盘将删除内存缓冲池; 当事人面,否则替代法律措施是启动OOM并杀死MySQL,那当我们歌词 宁愿不那我做。 那我的行为可可不可不可以 通过将vm.swappiness设置为0来实现。 否则, 否则它是保持MySQL的唯一选项,建议将vm.swappiness设置为1,以允许其他交换趋于稳定。当然,这会变快系统,但MySQL上的OOM非常苛刻。

猜你喜欢

CIO指南:如何使用 SAP HANA® 平台处理大数据

文档提要:大数据通常中有 三大属性:数量、数率和种类。哪几种属性给传统的基于磁盘的关系型数据库带来了巨大挑战。不同类型的数据对存储功能和性能有着不同的要求,对应的成本但是我同

2020-02-25

伽利略是怎样被迫害的?

教廷的迫害和晚年生活《对话》出版后6个月,罗马教廷便勒令停止出售,认为作者公然违背“1616年禁令”,哪此的现象严重,亟待审查。从前一群人在教皇乌尔邦八世面前挑拨说伽利略在《对

2020-02-25

关于观察,观察,再观察的格式的名言有哪些

展开完整版使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。我能要能三件东西:感情的句子友谊和图书。然而这三者之间何其相通!炽热的感情的句子能要能充实图书

2020-02-25

一道微机接口技术题目,高手解答下啊!!!

为你推荐:展开完正本回答由提问者推荐分人太好越来越多有点推荐扫描二维码下载使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。你对你是什么回答的评价是?换

2020-02-25

lixianfa1110的主页

cluster集群lockmetadatafileetcdzookeeper[root@test]#catapp1.gopackagemainimport("net/http"

2020-02-25