黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

MySQL寫入插入數(shù)據(jù)優(yōu)化配置

系統(tǒng) 2479 0

*innodb_buffer_pool_size

如果用Innodb,那么這是一個(gè)重要變量。相對(duì)于MyISAM來說,Innodb對(duì)于buffer size更敏感。MySIAM可能對(duì)于大數(shù)據(jù)量使用默認(rèn)的key_buffer_size也還好,但I(xiàn)nnodb在大數(shù)據(jù)量時(shí)用默認(rèn)值就感覺在爬了。 Innodb的緩沖池會(huì)緩存數(shù)據(jù)和索引,所以不需要給系統(tǒng)的緩存留空間,如果只用Innodb,可以把這個(gè)值設(shè)為內(nèi)存的70%-80%。和 key_buffer相同,如果數(shù)據(jù)量比較小也不怎么增加,那么不要把這個(gè)值設(shè)太高也可以提高內(nèi)存的使用率

*innodb_additional_pool_size

這個(gè)的效果不是很明顯,至少是當(dāng)操作系統(tǒng)能合理分配內(nèi)存時(shí)。但你可能仍需要設(shè)成20M或更多一點(diǎn)以看Innodb會(huì)分配多少內(nèi)存做其他用途

*innodb_log_file_size

對(duì)于寫很多尤其是大數(shù)據(jù)量時(shí)非常重要。要注意,大的文件提供更高的性能,但數(shù)據(jù)庫恢復(fù)時(shí)會(huì)用更多的時(shí)間。我一般用64M-512M,具體取決于服務(wù)器的空間

*innodb_log_buffer_size

默認(rèn)值對(duì)于多數(shù)中等寫操作和事務(wù)短的運(yùn)用都是可以的。如果經(jīng)常做更新或者使用了很多blob數(shù)據(jù),應(yīng)該增大這個(gè)值。但太大了也是浪費(fèi)內(nèi)存,因?yàn)?秒鐘總會(huì) flush(這個(gè)詞的中文怎么說呢?)一次,所以不需要設(shè)到超過1秒的需求。8M-16M一般應(yīng)該夠了。小的運(yùn)用可以設(shè)更小一點(diǎn)

innodb_flush_log_at_trx_commit (www.111cn.net這個(gè)很管用

抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了調(diào)整這個(gè)值。默認(rèn)值1的意思是每一次事務(wù)提交或事務(wù)外的指令都需要把日志寫入(flush)硬盤,這是很費(fèi)時(shí)的。特別是使用電 池供電緩存(Battery backed up cache)時(shí)。設(shè)成2對(duì)于很多運(yùn)用,特別是從MyISAM表轉(zhuǎn)過來的是可以的,它的意思是不寫入硬盤而是寫入系統(tǒng)緩存。日志仍然會(huì)每秒flush到硬 盤,所以你一般不會(huì)丟失超過1-2秒的更新。設(shè)成0會(huì)更快一點(diǎn),但安全方面比較差,即使MySQL掛了也可能會(huì)丟失事務(wù)的數(shù)據(jù)。而值2只會(huì)在整個(gè)操作系統(tǒng) 掛了時(shí)才可能丟數(shù)據(jù)。

上面是網(wǎng)上看的,我發(fā)現(xiàn)慢查詢?nèi)罩緝?nèi)有很多update和insert的查詢,就把innodb_flush_log_at_trx_commit改成了2,效果很明顯,改成0會(huì)更明顯,但安全性比較差。做下面的操作啟動(dòng)mysqld就生效

vim /etc/my.cn

innodb_flush_log_at_trx_commit=2

也可以在mysqld運(yùn)行時(shí)執(zhí)行

set GLOBAL innodb_flush_log_at_trx_commit = 2

下面是mysql手冊(cè)上innodb_flush_log_at_trx_commit的解釋

如果innodb_flush_log_at_trx_commit設(shè)置為0,log buffer將每秒一次地寫入log file中,并且log file的flush(刷到磁盤)操作同時(shí)進(jìn)行;但是,這種模式下,在事務(wù)提交的時(shí)候,不會(huì)有任何動(dòng)作。如果 innodb_flush_log_at_trx_commit設(shè)置為1(默認(rèn)值),log buffer每次事務(wù)提交都會(huì)寫入log file,并且,flush刷到磁盤中去。如果innodb_flush_log_at_trx_commit設(shè)置為2,log buffer在每次事務(wù)提交的時(shí)候都會(huì)寫入log file,但是,flush(刷到磁盤)操作并不會(huì)同時(shí)進(jìn)行。這種模式下,MySQL會(huì)每秒一次地去做flush(刷到磁盤)操作。注意:由于進(jìn)程調(diào)度策 略問題,這個(gè)“每秒一次的flush(刷到磁盤)操作”并不是保證100%的“每秒”

默認(rèn)值1是為了ACID (atomicity, consistency, isolation, durability)原子性,一致性,隔離性和持久化的考慮。如果你不把innodb_flush_log_at_trx_commit設(shè)置為1,你將獲得更好的性能,但是,你在系統(tǒng)崩潰的情況,可能會(huì)丟失最多一秒鐘的事務(wù)數(shù)據(jù)。當(dāng)你把innodb_flush_log_at_trx_commit設(shè)置 為0,mysqld進(jìn)程的崩潰會(huì)導(dǎo)致上一秒鐘所有事務(wù)數(shù)據(jù)的丟失。如果你把innodb_flush_log_at_trx_commit設(shè)置為2,只有在操作系統(tǒng)崩潰或者系統(tǒng)掉電的情況下,上一秒鐘所有事務(wù)數(shù)據(jù)才可能丟失。InnoDB的crash recovery崩潰恢復(fù)機(jī)制并不受這個(gè)值的影響,不管這個(gè)值設(shè)置為多少,crash recovery崩潰恢復(fù)機(jī)制都會(huì)工作。

另外innodb_flush_method參數(shù)也值得關(guān)注,對(duì)寫操作有影響

innodb_flush_method: 設(shè)置InnoDB同步IO的方式

1) Default – 使用fsync()

2) O_SYNC 以sync模式打開文件,通常比較慢

3) O_DIRECT,在Linux上使用Direct IO。可以顯著提高速度,特別是在RAID系統(tǒng)上。避免額外的數(shù)據(jù)復(fù)制和double buffering(mysql buffering 和OS buffering)。

更多詳細(xì)內(nèi)容請(qǐng)查看: http://www.111cn.net/database/mysql/56376.htm

MySQL寫入插入數(shù)據(jù)優(yōu)化配置


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論