《Mysql實例優化mysql insert性能的方法》要點:
本文介紹了Mysql實例優化mysql insert性能的方法,希望對您有用。如果有疑問,可以聯系我們。
本節內容:
mysql insert性能優化.MYSQL應用
mysql 的 insert 語句語法
?MYSQL應用
提高insert 性能的辦法
1,一條sql語句插入多條數據
?MYSQL應用
可以修改為:
?MYSQL應用
2,使用事務
?MYSQL應用
注意:
1、sql語句長度有限制,合并sql語句時要注意.長度限制可以通過max_allowed_packet配置項修改,默認為1M.
2、事務太大會影響執行效率,mysql有innodb_log_buffer_size配置項,超過這個值會使用磁盤數據,影響執行效率.MYSQL應用
關于事務的配置項說明:
innodb_buffer_pool_size
如果用Innodb,那么這是一個重要變量.相對于MyISAM來說,Innodb對于buffer size更敏感.
MySIAM可能對于大數據量使用默認的key_buffer_size也還好,但Innodb在大數據量時用默認值就感覺在爬了.MYSQL應用
Innodb的緩沖池會緩存數據和索引,所以不需要給系統的緩存留空間,如果只用Innodb,可以把這個值設為內存的70%-80%.
和 key_buffer相同,如果數據量比較小也不怎么增加,那么不要把這個值設太高也可以提高內存的使用率.MYSQL應用
innodb_additional_pool_size
這個的效果不是很明顯,至少是當操作系統能合理分配內存時.但你可能仍需要設成20M或更多一點以看Innodb會分配多少內存做其他用途.MYSQL應用
innodb_log_file_size
對于寫很多尤其是大數據量時非常重要.要注意,大的文件提供更高的性能,但數據庫恢復時會用更多的時間.我一般用64M-512M,具體取決于服務器的空間.MYSQL應用
innodb_log_buffer_size
默認值對于多數中等寫操作和事務短的運用都是可以的.如 果經常做更新或者使用了很多blob數據,應該增大這個值.但太大了也是浪費內存,因為1秒鐘總會 flush(這個詞的中文怎么說呢?)一次,所以不需要設到超過1秒的需求.8M-16M一般應該夠了.小的運用可以設更小一點.MYSQL應用
innodb_flush_log_at_trx_commit
抱怨Innodb比MyISAM慢 100倍?大概是忘了調整這個值.
默認值1的意思是每一次事務提交或事務外的指令都需要把日志寫入(flush)硬盤,這是很費時的.特別是使用電 池供電緩存(Battery backed up cache)時.
設成2對于很多運用,特別是從MyISAM表轉過來的是可以的,它的意思是不寫入硬盤而是寫入系統緩存.MYSQL應用
日志仍然會每秒flush到硬盤,所以一般不會丟失超過1-2秒的更新.
設成0會更快一點,但平安方面比較差,即使MySQL掛了也可能會丟失事務的數據.
而值2只會在整個操作系統 掛了時才可能丟數據.MYSQL應用
有關mysql insert語句性能優化的內容,就介紹這些了,希望對大家有所贊助.MYSQL應用
歡迎參與《Mysql實例優化mysql insert性能的方法》討論,分享您的想法,維易PHP學院為您提供專業教程。