MySQL 提高Insert效能

2021-10-10 19:30:53 字數 1205 閱讀 2987

插入乙個記錄需要的時間由下列因素組成,其中的數字表示大約比例:

這不考慮開啟表的初始開銷,每個併發執行的查詢開啟。

表的大小以logn (b樹)的速度減慢索引的插入。

加快插入的一些方法:

有選擇地用create table建立表。 

執行flush tables語句或命令mysqladmin flush-tables。

使用myisamchk --keys-used=0 -rq /path/to/db/tbl_name。這將從表中取消所有索引的使用。

用load data infile把資料插入到表中,因為不更新任何索引,因此很快。

如果只想在以後讀取表,使用myisampack壓縮它。參見15.1.3.3節,「壓縮表特性」。

用myisamchk -r -q /path/to/db/tbl_name重新建立索引。這將在寫入磁碟前在記憶體中建立索引樹,並且它更快,因為避免了大量磁碟搜尋。結果索引樹也被完美地平衡。

執行flush tables語句或mysqladmin flush-tables命令。

這樣效能會提高,因為索引快取區僅在所有insert語句完成後重新整理到磁碟上一次。一般有多少insert語句即有多少索引快取區重新整理。如果能用乙個語句插入所有的行,就不需要鎖定。對於事務表,應使用begin和commit代替lock tables來加快插入。

insert、update和delete操作在mysql中是很快的,通過為在一行中多於大約5次連續不斷地插入或更新的操作加鎖,可以獲得更好的整體效能。如果在一行中進行多次插入,可以執行lock tables,隨後立即執行unlock tables(大約每1000行)以允許其它的執行緒訪問表。這也會獲得好的效能。

--鎖表

lock tables `order` write;

--禁用鍵

alter table `order` disable keys ;

--插入資料

insert into `order` values (1,11,'updated');

insert into `order` values (2,11,'updated');
--啟用鍵

alter table `order` enable keys;

--解鎖表

unlock tables;

mysql 優化 insert 效能

mysql 的 insert 語句語法 insert into table field1 field2 values value1 value2 提高insert 效能的方法 1.一條sql語句插入多條資料 insert into insert table uid content type valu...

MySql的Query和Insert效能測試

通過對典型的query和insert操作的測試,暫時能得出如下結論 可能會受mysql版本,機器配置的影響 關於query 1.100w是個無索引查詢效能的分水嶺。2.資料量在30w 200w的區間,在索引高效的情況下,資料庫資料量的變化,基本對查詢不會產生明顯的影響 這也跟查詢原理相符 3.高效的...

如何提高MySQL效能

一 問題的提出 在應用系統開發初期,由於開發資料庫資料比較少,對於查詢sql語句,複雜檢視的的編寫等體會不出sql語句各種寫法的效能優劣,但是如果將應用系統 提交實際應用後,隨著資料庫中資料的增加,系統的響應速度就成為目前系統需要解決的最主要的問題之一。系統優化中乙個很重要的方面就是sql語句的優化...