mysql效能優化 插入資料的優化(筆記三)

2022-07-05 04:42:12 字數 1059 閱讀 3853

插入資料時,影響插入速度的主要是索引、唯一性校驗、一次插入的資料條數等。

插入資料的優化,不同的儲存引擎優化手段不一樣,在mysql中常用的儲存引擎有,myisam和innodb,兩者的區別:

對於非空表,插入記錄時,mysql會根據表的索引對插入的記錄建立索引。如果插入大量資料,建立索引會降低插入資料速度。

為了解決這個問題,可以在批量插入資料之前禁用索引,資料插入完成後再開啟索引。

禁用索引的語句:

alter table table_name disable keys

開啟索引語句:

alter table table_name enable keys

對於空表批量插入資料,則不需要進行操作,因為myisam引擎的表是在匯入資料後才建立索引。

唯一性校驗會降低插入記錄的速度,可以在插入記錄之前禁用唯一性檢查,插入資料完成後再開啟。

禁用唯一性檢查的語句:set unique_checks = 0;

開啟唯一性檢查的語句:set unique_checks = 1;

插入資料時,可以使用一條insert語句插入一條資料,也可以插入多條資料。

第二種方式的插入速度比第一種方式快。

當需要批量匯入資料

時,使用load data infile語句

比insert語句插入速度快很多。

用法和myisam一樣。

插入資料之前執行禁止對外鍵的檢查,資料插入完成後再恢復,可以提供插入速度。

禁用:set foreign_key_checks = 0;

開啟:set foreign_key_checks = 1;

插入資料之前執行禁止事務的自動提交,資料插入完成後再恢復,可以提高插入速度。

禁用:set autocommit = 0;

開啟:set autocommit = 1;

MySQL效能優化大資料量插入資料

專案背景 對mysql資料進行初始化加密 假設待加密表 表名student,列名a,擁有5000w資料量 這個方案缺陷在於,修改列 刪除列會重建表,給所有資料行新增一段資料,所以會導致資料量越大越耗時。如果無法繞過新增列,那麼就得使用online ddl,最大限度減少鎖的使用。使用方式 alter ...

MySQL innoDB資料插入效能優化

起因 有乙個innodb引擎的表table,在乙個大概3000次的foreach迴圈中執行 insert into table columna,columnb values valuea,valueb 結果居然超出了60s的php執行限制 當然這個限制可以在php.ini中修改 讓我很不解為何插入效...

mysql效能調優6 mysql效能優化總結 六

主從複製常見問題 1.主庫宕機,部分操作沒有寫入bin log,導致偏移量上沒有操作 2.從庫宕機,部分操作沒有寫入中繼日誌,導致重複讀取 3.從庫沒有設定read only,導致主從資料不一致 4.不唯一的server id和server uuid 5.max allow package設定引起的...