《Mysql實(shí)例優(yōu)化mysql insert性能的方法》要點(diǎn):
本文介紹了Mysql實(shí)例優(yōu)化mysql insert性能的方法,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
本節(jié)內(nèi)容:
mysql insert性能優(yōu)化.MYSQL應(yīng)用
mysql 的 insert 語(yǔ)句語(yǔ)法
?MYSQL應(yīng)用
提高insert 性能的辦法
1,一條sql語(yǔ)句插入多條數(shù)據(jù)
?MYSQL應(yīng)用
可以修改為:
?MYSQL應(yīng)用
2,使用事務(wù)
?MYSQL應(yīng)用
注意:
1、sql語(yǔ)句長(zhǎng)度有限制,合并sql語(yǔ)句時(shí)要注意.長(zhǎng)度限制可以通過(guò)max_allowed_packet配置項(xiàng)修改,默認(rèn)為1M.
2、事務(wù)太大會(huì)影響執(zhí)行效率,mysql有innodb_log_buffer_size配置項(xiàng),超過(guò)這個(gè)值會(huì)使用磁盤數(shù)據(jù),影響執(zhí)行效率.MYSQL應(yīng)用
關(guān)于事務(wù)的配置項(xiàng)說(shuō)明:
innodb_buffer_pool_size
如果用Innodb,那么這是一個(gè)重要變量.相對(duì)于MyISAM來(lái)說(shuō),Innodb對(duì)于buffer size更敏感.
MySIAM可能對(duì)于大數(shù)據(jù)量使用默認(rèn)的key_buffer_size也還好,但I(xiàn)nnodb在大數(shù)據(jù)量時(shí)用默認(rèn)值就感覺(jué)在爬了.MYSQL應(yīng)用
Innodb的緩沖池會(huì)緩存數(shù)據(jù)和索引,所以不需要給系統(tǒng)的緩存留空間,如果只用Innodb,可以把這個(gè)值設(shè)為內(nèi)存的70%-80%.
和 key_buffer相同,如果數(shù)據(jù)量比較小也不怎么增加,那么不要把這個(gè)值設(shè)太高也可以提高內(nèi)存的使用率.MYSQL應(yīng)用
innodb_additional_pool_size
這個(gè)的效果不是很明顯,至少是當(dāng)操作系統(tǒng)能合理分配內(nèi)存時(shí).但你可能仍需要設(shè)成20M或更多一點(diǎn)以看Innodb會(huì)分配多少內(nèi)存做其他用途.MYSQL應(yīng)用
innodb_log_file_size
對(duì)于寫很多尤其是大數(shù)據(jù)量時(shí)非常重要.要注意,大的文件提供更高的性能,但數(shù)據(jù)庫(kù)恢復(fù)時(shí)會(huì)用更多的時(shí)間.我一般用64M-512M,具體取決于服務(wù)器的空間.MYSQL應(yīng)用
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è)詞的中文怎么說(shuō)呢?)一次,所以不需要設(shè)到超過(guò)1秒的需求.8M-16M一般應(yīng)該夠了.小的運(yùn)用可以設(shè)更小一點(diǎn).MYSQL應(yīng)用
innodb_flush_log_at_trx_commit
抱怨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)過(guò)來(lái)的是可以的,它的意思是不寫入硬盤而是寫入系統(tǒng)緩存.MYSQL應(yīng)用
日志仍然會(huì)每秒flush到硬盤,所以一般不會(huì)丟失超過(guò)1-2秒的更新.
設(shè)成0會(huì)更快一點(diǎn),但平安方面比較差,即使MySQL掛了也可能會(huì)丟失事務(wù)的數(shù)據(jù).
而值2只會(huì)在整個(gè)操作系統(tǒng) 掛了時(shí)才可能丟數(shù)據(jù).MYSQL應(yīng)用
有關(guān)mysql insert語(yǔ)句性能優(yōu)化的內(nèi)容,就介紹這些了,希望對(duì)大家有所贊助.MYSQL應(yīng)用
歡迎參與《Mysql實(shí)例優(yōu)化mysql insert性能的方法》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/13688.html