MySQL性能测试调优

操作系统

基本操作

查看磁盘分区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

MySQL性能测试调优的更多相关文章

  1. MySQL性能调优与架构设计——第10章 MySQL数据库Schema设计的性能优化

    第10章 MySQL Server性能优化 前言: 本章主要通过针对MySQL Server(mysqld)相关实现机制的分析,得到一些相应的优化建议.主要涉及MySQL的安装以及相关参数设置的优化, ...

  2. mysql技术调优资料整理

    1,15 个有用的 MySQL/MariaDB 性能调整和优化技巧 2,MariaDB设置主从复制 3,CentOS6.4安装mysql2redis        http://www.cnblogs ...

  3. MySQL性能调优——锁定机制与锁优化分析

    针对多线程的并发访问,任何一个数据库都有其锁定机制,它的优劣直接关系着数据的一致完整性与数据库系统的高并发处理性能.锁定机制也因此成了各种数据库的核心技术之一.不同数据库存储引擎的锁定机制是不同的,本 ...

  4. MySQL性能优化总结___本文乃《MySQL性能调优与架构设计》读书笔记!

    一.MySQL的主要适用场景 1.Web网站系统 2.日志记录系统 3.数据仓库系统 4.嵌入式系统 二.MySQL架构图: 三.MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎 ...

  5. MySQL 性能调优之存储引擎

    原文:http://bbs.landingbj.com/t-0-246222-1.html        http://bbs.landingbj.com/t-0-245851-1.html MySQ ...

  6. MySQL性能调优的10个方法 - mysql数据库栏目

    摘要: https://edu.aliyun.com/a/29036?spm=5176.11182482.related_article.1.hbeZbF 摘要: MYSQL 应该是最流行了 WEB ...

  7. MySql(十一):MySQL性能调优——常用存储引擎优化

    一.前言 MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.本章将介绍最为常用的两种存储引擎进行针对性的优化建议. 二.MyISAM存储 ...

  8. MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控

    第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一 ...

  9. MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案

    第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...

随机推荐

  1. Windows任务栏遮挡

    通过MSTSC远程桌面连接,远程的电脑桌面任务栏被本地的任务栏遮住了! 首先在本地的任务栏右键,选择任务管理器,选择正在运行的windows资源管理器进程,右键选择重新启动(R) OK,重启的Wind ...

  2. Android利用canvas画各种图形

    Android利用canvas画各种图形(点.直线.弧.圆.椭圆.文字.矩形.多边形.曲线.圆角矩形) 本文链接:https://blog.csdn.net/rhljiayou/article/det ...

  3. 真正的能理解CSS中的line-height,height与line-height

    https://blog.csdn.net/a2013126370/article/details/82786681 在最近的项目中,常常用到line-height,只是简单的理解为行高但并没有深层次 ...

  4. Typescript中的可索引接口 类类型接口

    /* 5.typeScript中的接口 可索引接口 类类型接口 */ /* 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用 ...

  5. ISO/IEC 9899:2011 条款6.7.2——类型说明符

    6.7.2 类型说明符 语法 1.type-specifier: void char short int long float double signed unsigned _Bool _Comple ...

  6. Python3基础 全局变量 在函数内可使用,不可直接修改

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  7. oracle 索引聚簇表的工作原理

    作者:Richard-Lui 一:首先介绍一下索引聚簇表的工作原理:(先创建簇,再在簇里创建索引,创建表时指定列的簇类型) 聚簇是指:如果一组表有一些共同的列,则将这样一组表存储在相同的数据库块中:聚 ...

  8. LeetCode_206. Reverse Linked List

    206. Reverse Linked List Easy Reverse a singly linked list. Example: Input: 1->2->3->4-> ...

  9. kafka如果有多个patition,消费消息的时候消息是没有顺序的

    创建一个2个分区,3个副本的topic,名字叫first kafka-topics.sh  --create --zookeeper datanode1:2181 --partitions 2 --r ...

  10. POJ 2342 Anniversary party 树形DP基础题

    题目链接:http://poj.org/problem?id=2342 题目大意:在一个公司中,每个职员有一个快乐值ai,现在要开一个party,邀请了一个员工就不可能邀请其直属上司,同理邀请了一个人 ...