插入乙個記錄需要的時間由下列因素組成,其中的數字表示大約比例:
這不考慮開啟表的初始開銷,每個併發執行的查詢開啟。
表的大小以logn (b樹)的速度減慢索引的插入。
加快插入的一些方法:
有選擇地用create table建立表。這樣效能會提高,因為索引快取區僅在所有insert語句完成後重新整理到磁碟上一次。一般有多少insert語句即有多少索引快取區重新整理。如果能用乙個語句插入所有的行,就不需要鎖定。對於事務表,應使用begin和commit代替lock tables來加快插入。執行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、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語句的優化...