|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间。
以下的情况具有必定的代表性,能够说是中小企业一样平常设置和事情情况。但愿经由过程本文能让人人了解Linux下MySQL数据库功能调优办法。
硬件筹办情况:
硬盘:16块SAS15KRAID5带512MCache
CPU:AMD4核两颗
内存:16G
软件情况:
操纵体系:RedHatAS4.62.6.9-67.ELsmpMySQL:5.0
上面分离依据分歧场景举行功能调优:
利用场景A:写操纵(拔出/查询/删除)麋集,并且数据容量远远超硬件筹办情况:
硬盘:16块SAS15KRAID5带512MCache
CPU:AMD4核两颗
内存:16G
软件情况
操纵体系:RedHatAS4.62.6.9-67.ELsmp
MySQL:5.0
上面分离依据分歧场景举行功能调优:
利用场景A:
写操纵(拔出/查询/删除)麋集,并且数据容量远远凌驾内存的巨细(最小是200G以上,乃至更年夜到1.5T以上),每秒必要以千为单元的事件操纵
数据牢靠性请求不高,同意丢几笔记录(硬件出妨碍时)
优化体例:
在这类情形下,数据库的Cache基础上射中率长短常低的,对数据库的操纵基础上就是对磁盘举行操纵,因而偏重点应当是对磁盘相干优化。
起首是思索数据库存储引擎,因为触及拔出/删除/查询等操纵,并且要撑持事件,因而思索利用InnoDB存储引擎,不思索MyIsam缘故原由是该存储引擎是表级锁,无数据删除时会十分慢。
设置符合的MySQL参数,因为有16G内存,因而参数设置以下
innodb_buffer_pool_size=8Ginnodb_additional_mem_pool_size=800M,innodb_log_buffer_size=4Minnodb_log_file_size=500Minnodb_log_files_in_group=4log-bin由于利用主备复制,因而必要翻开Log-Bin,这里就触及一个sync-bin的观点,缺省情形下,sync-bin在MySQL中是封闭的,但存在一个风险,由于写日记没有革新到硬盘中往的话,日记是写在操纵体系的文件体系里的Cache中,如许若呆板断电,那末日记信息将部分丧失。为了削减数据丧失,我们测试了sync-bin=1,sync-bin=5和sync-bin=20,三种情形,sync-bin=1的情形下,丧失数据最坏几率是丢一个事件的数据,但功能十分差;设置sync-bin=5的情形下,功能能够进步1倍摆布;设置sync-bin=20时,功能比sync-bin=5又能够进步1倍,设置年夜于20的值,基础上相差不年夜,功能进步不了几,最坏20个事件数据丧失是在我们的同意局限以内,因而设置20是个公道的值,这个值详细取决于你的体系可以最坏同意丢少的事件数据。
若你的体系对数据丧失不于思索,能够封闭sync-bin,这时候数据革新到硬盘完整取决于操纵体系的设置,相干的设置参数有以下:
/proc/sys/vm/dirty_ratio这个参数把持一个历程在文件体系中的文件体系写缓冲区的巨细,单元是百分比,暗示体系内存的百分比,暗示当一个历程中写缓冲利用到体系内存几的时分,再有磁盘写操纵时入手下手向磁盘写出数据。增年夜之会利用更多体系内存用于磁盘写缓冲,也能够极年夜进步体系的写功能。可是,当你必要延续、恒定的写进场所时,应当降低其数值,一样平常缺省是40。更新办法
echo30>/proc/sys/vm/dirty_ratio(或则修正/etc/sysctl.conf文件,增添sys.vm.dirty_ratio=30重起呆板)
/proc/sys/vm/dirty_background_ratio这个参数把持文件体系的pdflush历程,在什么时候革新磁盘。单元是百分比,暗示体系总内存的百分比,意义是当磁盘的脏数据缓冲到体系内存几的时分,pdflush入手下手把脏数据革新到磁盘。增年夜会利用更多体系内存用于磁盘写缓冲,也能够极年夜进步体系的写功能。可是,当你必要延续、恒定的写进场所时,应当下降其数值,一样平常缺省是10。
/proc/sys/vm/dirty_writeback_centisecsPdflush写背景历程每隔多久被叫醒并实行把脏数据写出到硬盘。单元是1/100秒。缺省数值是500,也就是5秒。假如你的体系是延续地写进举措,那末实践上仍是下降这个数值对照好,如许能够把尖峰的写操纵削平成屡次写操纵。设置办法以下:
echo200>/proc/sys/vm/dirty_writeback_centisecs/proc/sys/vm/dirty_expire_centisecs这个参数声明Linux内核写缓冲区内里的脏数据多“旧”了以后,pdflush历程就入手下手思索写到磁盘中往。单元是1/100秒。缺省是30000,也就是30秒的数据就算旧了,将会革新磁盘。关于出格重载的写操纵来讲,这个值得当减少也是好的,但也不克不及减少太多,由于减少太多也会招致IO进步太快。倡议设置为1500,也就是15秒算旧。
echo1500>/proc/sys/vm/dirty_expire_centisecs因而若没有调剂这些参数,全体以缺省值,并且封闭sync-bin的话,那末最多丧失的数据是:
5秒种(dirty_writeback_centisecs)以内的,小于1.6G的数据(dirty_background_ratio,16G/10=1.6G)
固然,实践上5秒以内不太大概写1.6G的数据,因而最坏就是5秒钟以内的数据丧失。因而若要封闭sync-bin,又不想丧失太多半据的话,能够经由过程调剂dirty_writeback_centisecs这个参数,如调剂到200(2秒),如许最多就丢2秒钟的数据。又能够进步数据的写才能。
MySQL里另有一个参数能够调剂,进步数据库的写才能,那就是
innodb_flush_log_at_trx_commit这个参数默许是1,即每次事件Commit时,都革新日记,以避免数据丧失。由于我们的体系同意丧失大批数据,因而能够把innodb_flush_log_at_trx_commit设置为2,同意丧失一个事件的数据,经测试,发明2能够进步25%左
12下一页
要明白学好linux不是一件一蹴而就的事,一定要能坚持使用它,特别是在使用初期。 |
|