MySQL数据库优化的方案与实践是怎样的

技术MySQL数据库优化的方案与实践是怎样的这篇文章给大家介绍MySQL数据库优化的方案与实践是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。最近一段时间,我们整理了一些关于Percona,L

本文介绍了MySQL数据库的优化方案和实践,内容非常详细。感兴趣的朋友可以参考一下,希望对你有所帮助。

最近,我们整理了一些关于Percona、Linux、Flashcache和硬件设备优化的经验与大家分享:

硬件

1.开放BBWC

RAID卡全部缓存(电池备份写缓存,可以明显提高IO性能。因为停电会丢失数据,所以必须有电池支持。电池会定期充放电,一般90天左右。当发现功率低于某个阈值时,写缓存策略将从写回设置为写通,这相当于写缓存将无效。这时如果系统有大量的IO操作,可能会明显感觉到IO响应速度慢。目前新的RAID卡内置了闪存,断电后写入缓存的数据会写入闪存,这样数据永远不会丢失,但仍然需要电池的支持。

有两种解决方案:

(1)手动触发充放电,业务低的时候可以选择做,减少对应用的影响。

(2)设置写缓存策略强制回写,即使电池出现故障也保持写缓存策略回写,会导致断电后数据丢失的风险。

目前部分硬件厂商提供电容供电的RAID卡,不存在电池充放电问题,可以联系自己的硬件厂商。

2.磁盘阵列卡配置

关闭读缓存:缓存:RAID卡上的缓存容量有限,所以我们选择直接模式读取数据,从而忽略读缓存。

关闭预读:RAID卡的预读功能对于随机IO提升不大,所以关闭预读功能。

关闭磁盘缓存:一般情况下,如果使用RAID,系统会默认关闭磁盘缓存,也可以通过命令强制关闭。

以上设置可以通过RAID卡的命令行完成,比如LSI芯片的RAID卡使用megacli命令。

3.打开快速路径功能

Fastpath是大规模集成电路的新功能,固态硬盘在RAID控制器中进行了优化。使用快速路径功能可以最大限度地提高固态硬盘的性能。如果固态硬盘用作RAID,可以打开快速路径功能。对于fastpath功能,您可以从LSI官方网站下载资料,并咨询自己的硬件提供商。

4.Fusionio参数调整

基本上Fusionio不需要做任何调整,以下三个参数可能会提升性能:

options iomemory-vsl use _ workqueue=0

对于fusionio设备,忽略Linux IO调度相当于使用NOOP。

选项iomemory-vsl disable-msi=0

打开MSI中断,或者如果设备支持,将其打开。

选项iomemory-vsl use _ large _ pcie _ rx _ buffer=1

打开大型PCIE缓冲区可能会提高性能。

操作系统

1.输入输出调度算法

Linux有四种IO调度算法:CFQ、截止期、预期和NOOP。CFQ是默认的IO调度算法。在完全随机访问的环境下,CFQ与deadline和NOOP的性能差异很小,但一旦出现大的连续IO,CFQ可能会造成小IO的响应延迟增加,因此数据库环境建议将其修改为Deadline算法,性能更加稳定。我们的环境统一使用截止日期算法。

IO调度算法都是基于磁盘设计的,所以减少磁头移动是最重要的考虑因素之一。但是,在使用Flash存储设备后,我们可以使用NOOP算法来代替头部移动。NOOP表示不操作,也就是说我不会做任何IO优化,我会根据请求完全按照FIFO处理IO。

减少预读:/sys/block/SDB/queue/read _ ahead _ KB,默认为128,调整为16。

增加队列:/sys/block/sdb/queue/NR _ requests,默认值为128,调整为512。

2.NUMA设置

单个实例,建议关闭NUMA。关闭NUMA有三种方法:

(1)硬件层,在BIOS中设置关机。

(2) OS内核,启动时设置numa=off。

(3)可以通过numactl命令将内存分配策略更改为alternate,也可以在BIOS中设置一些硬件。

单机多实例,请参考:http://www.hellodb.net/2011/06/mysql_multi_instance.html.

3.文件系统设置

我们使用XFS文件系统,XFS有两个设置:su(条带大小)和sw(stirpe宽度)。这两个参数应该根据硬件级别RAID来设置,比如RAID10为10个磁盘,条带大小为64K,XFS设置为su=64K,sw=10。

Xfmount参数:默认值、rw、noatime、nodiratime、noikeep、no barrier、allocsize=8m、attr2、largeio、inod

e64,swalloc
  数据库
  1.Flashcache参数
  创建flashcache:flashcache_create -b 4k cachedev /dev/sdc /dev/sdb
  指定flashcache的block大小与Percona的page大小相同。
  Flashcache参数设置:
  flashcache.fast_remove = 1:打开fast remove特性,关闭机器时,无需将cache中的脏块写入磁盘。
  flashcache.reclaim_policy = 1:脏块刷出策略,0:FIFO,1:LRU。
  flashcache.dirty_thresh_pct = 90:flashcache上每个hash set上的脏块阀值。
  flashcache.cache_all = 1:cache所有内容,可以用黑名单过滤。
  flashecache.write_merge = 1:打开写入合并,提升写磁盘的性能。
  2.Percona参数
  innodb_page_size:如果使用fusionio,4K的性能最好;使用SAS磁盘,设置为8K。如果全表扫描很多,可以设置为16K。比较小的page size,可以提升cache的命中率。
  innodb_adaptive_checkpoint:如果使用fusionio,设置为3,提高刷新频率到0.1秒;使用SAS磁盘,设置为2,采用estimate方式刷新脏页。
  innodb_io_capacity:根据IOPS能力设置,使用fuionio可以设置10000以上。
  innodb_flush_neighbor_pages = 0:针对fusionio或者SSD,因为随机IO足够好,所以关闭此功能。
   innodb_flush_method=ALL_O_DIRECT:公版的MySQL只能将数据库文件读写设置为DirectIO,对于 Percona可以将log和数据文件设置为direct方式读写。但是我不确定这个参数对于 innodb_flush_log_at_trx_commit的影响。
  innodb_read_io_threads = 1:设置预读线程设置为1,因为线性预读的效果并不明显,所以无需设置更大。
  innodb_write_io_threads = 16:设置写线程数量为16,提升写的能力。
  innodb_fast_checksum = 1:开启Fast checksum特性。

  监 控
  1.fusionio监控:fio-status命令
  Media status: Healthy; Reserves: 100.00%, warn at 10.00%
  Thresholds: write-reduced: 96.00%, read-only: 94.00%
  Lifetime data volumes:
  Logical bytes written : 2,664,888,862,208
  Logical bytes read : 171,877,629,608,448
  Physical bytes written: 27,665,550,363,560
  Physical bytes read : 223,382,659,085,448
  2.flashcache监控:dmsetup status
  read hit percent(99)
  write hit percent(51)
  dirty write hit percent(44)

关于MySQL数据库优化的方案与实践是怎样的就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/129594.html

(0)

相关推荐

  • 描写青春的词语,形容正值青春的成语有哪些

    技术描写青春的词语,形容正值青春的成语有哪些形容正值青春的成语有:风华正茂描写青春的词语,二八年华,红颜绿鬓,软玉娇香,朱颜绿发 1,风华正茂[fēng  huá  zhèng  mào]: 正是青春焕发、风采动人和才华

    生活 2021年10月23日
  • dya 2.c++语法

    技术dya 2.c++语法 dya 2.c++语法构造函数 用途:用来初始化类对象的数据成员; 构造函数和类名相同,没有返回值,可以有多个构造函数 不同的构造函数形参数量或者类型要有所区别

    礼包 2021年12月2日
  • geth、web3.js、JSON RPC、truffle之间是什么关系?

    技术geth, web3.js, JSON RPC, truffle之间的关系是什么geth, web3.js, JSON RPC, truffle之间的关系是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希

    攻略 2021年12月14日
  • SpringCloud (一) Eureka

    技术SpringCloud (一) Eureka SpringCloud (一) EurekaEurekaEureka 是一个服务治理组件,它主要包括服务注册和服务发现,主要用来搭建服务注册中心。
    Eu

    礼包 2021年12月23日
  • 电话查公司,查企业联系方式有哪些方法

    技术电话查公司,查企业联系方式有哪些方法您好,我来为您解答电话查公司。就目前来说,查询企业联系方式,有以下几种办法:1、打114电话查询。
    114可以帮您查询您所需要的企业的联系方式,你只需要把自己想要查询的企业的名称报

    生活 2021年10月26日
  • 如何理解Java设计模式责任链模式

    技术如何理解Java设计模式责任链模式本篇文章给大家分享的是有关如何理解Java设计模式责任链模式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、责任链模

    攻略 2021年10月23日