自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于MySQL優(yōu)化insert性能的相關(guān)介紹

數(shù)據(jù)庫(kù) MySQL
本文主要是MySQL的 insert 語(yǔ)句語(yǔ)法,關(guān)于mysql 優(yōu)化 insert 性能 的相關(guān)介紹。

MySQL的 insert 語(yǔ)句語(yǔ)法,關(guān)于mysql 優(yōu)化 insert 性能 的相關(guān)介紹。 

  1. insert into `table`(`field1`,`field2`) values('value1','value2'); 

提高insert 性能的方法

1.一條sql語(yǔ)句插入多條數(shù)據(jù) 

  1. INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0''content_0', 0);  
  2. INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_1''content_1', 1); 

[[232662]]

可以寫成 

  1. INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0''content_0', 0), ('userid_1''content_1', 1); 

2.使用事務(wù) 

  1. START TRANSACTION 
  2. INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0''content_0', 0);  
  3. INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_1''content_1', 1);  
  4. ...  
  5. COMMIT

 注意

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í)行效率。

關(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)值就感覺在爬了。 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ù)庫(kù)恢復(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è)詞的中文怎么說(shuō)呢?)一次,所以不需要設(shè)到超過(guò)1秒的需求。8M-16M一般應(yīng)該夠了。小的運(yùn)用可以設(shè)更小一點(diǎn)。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)緩存。日志仍然會(huì)每秒flush到硬 盤,所以你一般不會(huì)丟失超過(guò)1-2秒的更新。設(shè)成0會(huì)更快一點(diǎn),但安全方面比較差,即使MySQL掛了也可能會(huì)丟失事務(wù)的數(shù)據(jù)。而值2只會(huì)在整個(gè)操作系統(tǒng) 掛了時(shí)才可能丟數(shù)據(jù)。 

責(zé)任編輯:龐桂玉 來(lái)源: 今日頭條
相關(guān)推薦

2009-12-24 15:04:40

ADO管理

2009-12-07 18:33:31

WCF Service

2009-12-11 16:01:45

VS 2008性能

2010-05-26 18:52:28

Linux 查看性能

2010-05-26 17:39:38

Linux性能監(jiān)控

2011-07-21 13:51:38

java

2011-07-21 14:15:08

java

2010-10-09 15:07:35

MySQL日期

2010-04-07 16:02:29

Oracle性能

2009-12-10 17:02:50

PHP站點(diǎn)性能

2021-09-02 10:10:59

技術(shù)VS Code實(shí)踐

2020-10-19 19:45:58

MySQL數(shù)據(jù)庫(kù)優(yōu)化

2010-10-09 16:11:21

Mysql函數(shù)

2010-04-07 09:31:02

Oracle數(shù)據(jù)庫(kù)

2010-06-07 14:42:47

Linux性能測(cè)試工具

2010-03-02 09:53:14

MySQL性能優(yōu)化

2020-03-23 15:15:57

MySQL性能優(yōu)化數(shù)據(jù)庫(kù)

2009-04-20 08:51:50

MySQL查詢優(yōu)化數(shù)據(jù)庫(kù)

2018-07-25 19:44:27

數(shù)據(jù)庫(kù)MySQL中間件

2009-11-17 17:07:01

PHP關(guān)聯(lián)數(shù)組
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)