资讯专栏INFORMATION COLUMN

MySQL性能测试调优

2450184176 / 3119人阅读

摘要:例如,在一个现代的服务器,初始化的缓冲池大约需要秒。合理的取值范围是到缓冲池大小的是日志组中日志文件个数。这个值越大,缓冲池就需要更少的刷新检查,减少磁盘。

操作系统

基本操作

查看磁盘分区mount选项

$ mount

永久修改分区mount选项(系统重启后生效)

修改文件 /etc/fstab 中对应分区的mount options列的值

在线修改分区mount选项(系统重启后失效)

$sudo -t ext4 -o remount,noatime,errors=remount-or /

文件系统优化

ext4文件系统优化

分区mount选项加noatime $sudo -t ext4 -o remount,noatime,errors=remo

注意:刚开始加了 nodelalloc 发现mysql写入不如去掉此参数(原因需分析)[参考:http://blog.tao.ma/?p=58]

MySQL

基本操作

显示innodb引擎状态

mysql> show engine innodb status;

查看配置参数

mysql> show variables [like ""];

查看运行状态值

mysql> show global status [like ""];

修改配置参数方法

4.1. 修改配置文件(重启服务生效,适用于所有参数)

文件位置: /etc/my.cnf

4.2. 命令动态修改(重启服务失效,适用于动态参数)

°mysql> set global [参数]=[值]

重启MySQL服务

$ sudo service [mysql.server] restart

赋权同时添加用户,刷新权限

语法:

mysql> grant [权限] privileges on [数据库].[对象] to [用户名]%"[机器名]" identified by "[密码]";

示例:

mysql> grant all privileges on *.* to user1@"%" identified by "pass1";
mysql> grant all privileges on *.* to user1@"localhost" identified by "pass1";
mysql> flush privileges;

参数调整

innodb_buffer_pool_size 参考

作用:

  

InnoDB用于缓存表及索引数据的内存缓冲区,InnoDB加速优化首要参数

说明:

  

InnoDB用于缓存表及索引数据的内存缓冲区容量的字节数。默认是128M。最大值受限于CPU架构;32位系统最大4294967295 (2的32次方减1),64位系统最大18446744073709551615 (2的64次方减1)。在32位系统中,CPU架构和操作系统可以使用的实际最大值可能小于理论上的最大值。当缓冲区大小超过1GB时,设置innodb_buffer_pool_instances为大于1的值,能够改进一个负荷较大的服务器的可扩展性。
如果你将这个值设的较大,当多次访问数据表中相同的数据时可以减少磁盘IO.专用的数据库服务器上,你可以将此值设置为机器物理内存的80%。如果出现以下问题,请缩小该参数的值。
1.物理内存争用,导致操作系统进行页调度
2.InnoDB用额外的内存进行缓冲和控制结构,所以总共分配的内存将比指定的约大10%
3.地址空间必须是连续的,这在Windows系统中某些DLL需要加载指定地址时可能是一个问题
4.初始化缓冲池的时间与它的大小成正比,如果缓冲池太大,初始化时间可能比较长。例如,在一个现代的Linux x86_64服务器,初始化10GB的缓冲池大约需要6秒。

修改方法:

  

静态参数,必须通过配置文件修改: innodb_buffer_pool_size=8G

日志相关参数

2.1. innodb_log_file_size 参考

作用:

  

日志组中每个日志文件大小

说明:

  

日志组中每个日志文件的大小. 所有日志文件大小总和(innodb_log_file_size * innodb_log_files_in_group)不能超过一个最大值(略小于512GB)。例如,两个255G的日志文件刚好接近但未超过最大值。默认值是48M。合理的取值范围是1MB到缓冲池大小的1/N,N是日志组中日志文件个数。这个值越大,缓冲池就需要更少的刷新检查,减少磁盘IO。但是值过大会加大宕机恢复时间,虽然自MySQL5.5改进了恢复性能,但是还是要考虑下这个值的合理性。

修改方法:

  

静态参数,必须通过配置文件修改: innodb_log_file_size=256M

2.2. innodb_log_files_in_group 参考

作用:

  

日志组中日志文件个数。

说明:

  

日志组中日志文件个数。InnoDB循环方式写日志文件。默认值(也是建议值)是2。日志文件的位置通过innodb_log_group_home_dir指定。所有日志文件大小总和(innodb_log_file_size * innodb_log_files_in_group)不能超过一个最大值(略小于512GB)。

修改方法:

  

静态参数,必须通过配置文件修改: innodb_log_files_in_group=3

2.3. innodb_log_buffer_size 参考

作用:

  

InnoDB写日志文件到磁盘的缓冲区大小

说明:

  

InnoDB写日志文件到磁盘的缓冲区大小。默认值是8M。大的日志缓冲区支持大事务运行,在事务提交前不需要将日志写到磁盘。如果你有些事务update,insert或delete很多行,加大日志缓冲可以减少磁盘IO。

修改方法:

  

静态参数,必须通过配置文件修改: innodb_log_buffer_size=16M

innodb_flush_method 参考

作用:

  

控制InnoDB flush数据和日志文件采用的系统调用

说明:

  

Windows不用设置
Linux可选择:fdatasync(默认),O_DSYNC,O_DIRECT(直接写入磁盘,禁止系统Cache),O_DIRECT_NO_FSYNC(>=5.6.7版本支持)

修改方法:

  

静态参数,必须通过配置文件修改: innodb_flush_method=O_DIRECT

innodb_flush_log_at_trx_commit(未修改) 参考

作用:

  

控制事务符合ACID和提高系统性能之间的权衡

说明:

  

这个参数在事务符合ACID和高性能之间进行平衡,你可以通过调整这个参数达到高性能,但是宕机时可能丢失1秒的事务。
这个参数有3个值选项0,1,2:
1(默认值):严格遵从ACID,事务提交时log buffer被写到日志文件中,并将日志文件内容flush到磁盘。
0:任何mysqld进程崩溃丢失1秒钟的事务。log buffer每隔1秒被写入日志文件并将日志文件刷新到磁盘,事务提交时不执行log buffer写入日志文件的操作。因为系统调度问题,不能保证每秒日志文件都刷新到磁盘百分之百执行。
2:任何mysqld进程崩溃丢失1秒钟的事务。事务提交时log buffer被写入日志文件,每隔1秒将日志文件刷新到磁盘。因为系统调度问题,不能保证每秒日志文件都刷新到磁盘百分之百执行。

修改方法:

  

动态参数,可以通过配置文件和命令修改:innodb_flush_log_at_trx_commit=2

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/46346.html

相关文章

  • 腾讯云CDB的AI技术实践:CDBTune

    摘要:欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦作者邢家树,高级工程师,目前就职于腾讯基础架构部数据库团队。导语是腾讯云自主研发的数据库智能性能调优工具。 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者:邢家树,高级工程师,目前就职于腾讯TEG基础架构部数据库团队。腾讯数据库技术团队维护MySQL内核分支TXSQL,100%兼容原生MySQL版本,对内支持微信...

    Donne 评论0 收藏0
  • TXSQL:云计算时代数据库核弹头——云+未来峰会开发者专场回顾

    摘要:腾讯内核研发专家张青林在腾讯云未来峰会的开发者专场做了主题为云计算时代数据库核弹头的技术内容分享,本次分享从五个方面介绍腾讯云和的概念腾讯云作为国内云计算领先公司,在全球建立了多个数据中心,供数于万计的开发者使用。 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 5月23-24日,以焕启为主题的腾讯云+未来峰会在广州召开,广东省各级政府机构领导、海内外业内学术专家、行业大咖...

    wenhai.he 评论0 收藏0
  • ❤️字节跳动学姐熬了一个月才完成这份内部软件测试开发手册,在GitHub标星27k,开源下载

    本文是为了帮大家快速回顾了测试中知识点,这套面试手册整整花了一个月的时间整理出来,上传到Git上目前star数达到了27K+。内容涵盖了诸多技术栈的面试题和答案,相信可以帮助大家在最短的时间内用作面试复习,能达到事半功倍效果。 同时用XMind画了一张导图记录软件测试的学习笔记,有需要的朋友,帮作者关注点赞收藏三连一下,即可无偿下载一份! 测试开发手册完整版PDF☞☞☞ 软件测试核心知识点目录内容...

    tinna 评论0 收藏0
  • Linux运维习惯小结

    摘要:从事运维一年半,遇到过各式各样的问题,数据丢失,网站挂马,误删数据库文件,黑客攻击等各类问题今天想简单整理一下,分享给各位小伙伴一线上操作规范测试使用当初学习的使用,从基础到服务到集群,都是在虚拟机做的,虽然老师告诉我们跟真机没有什么差别, 从事运维一年半,遇到过各式各样的问题,数据丢失,网站挂马,误删数据库文件,黑客攻击等各类问题 今天想简单整理一下,分享给各位小伙伴 一、线上操作规...

    WalkerXu 评论0 收藏0
  • ​深度分析 | MyCat与DBLE的对比性能调优

    作者简介 蓝寅,开源分布式中间件DBLE项目负责人;持续专注于数据库方面的技术, 始终在一线从事开发;对数据复制,读写分离,分库分表的有深入的理解与实践。 问题起因: 用benchmarksql_for_mysql对原生MyCat-1.6.1和DBLE-2.17.07版做性能测试对比,发现DBLE性能只到原生版MyCat的70%左右。 问题分析过程: 分析过程主要有以下内容:包括现象,收集数据,分...

    赵春朋 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<