mysql 效能優化篇 優化資料庫結構

2021-08-11 22:03:57 字數 1877 閱讀 2613

方法1:

將字段很多的表分解為多個表。

通過這種分解,可以提高表的查詢效率。對於字段很多,且有些字段使用不頻繁的表,可以通過這種分解的方式優化資料庫的效能。

方法2:

增加中間表

對於經常需要聯合查詢的表,可以建立中間表 提高查詢效率。通過建立中間表,把需要經常聯合查詢的資料插入到中間表,然後將原來的聯合查詢改為對中間表的查詢,以此來提高查詢效率。

方法3:

增加冗餘字段

合理加入冗餘字段可以增加查詢的速度。從資料庫效能來看,為了提高查詢速度而增加少量的冗餘 大部分是可以接受的。是否增加冗餘提高資料庫效能,這要根據實際需求綜合分析。

方法4:

優化插入記錄的速度

4.1 禁止索引

插入記錄時,mysql會根據表的索引對插入的記錄建立索引。如果插入大量資料,建立索引會降低插入記錄的速度,為了解決這種問題,可以在插入記錄之前,僅用索引,資料插入完畢後再開啟索引。

禁止索引

alter

table table_name disable keys

開啟索引

alter

table table_name enable keys

4.2、禁止唯一性

插入資料時,mysql會對插入的記錄進行唯一性校驗,這種唯一性校驗也會降低插入記錄的速度,為了降低這種情況對查詢速度的影響,我們先禁止唯一性檢查。

禁止唯一性檢查語句

set unique_checks=0;
開啟唯一性檢查語句

set unique_checks=1;
4.3、使用批量插入。

插入多條記錄時,可以使用一條 insert 語句插入一條記錄,也可以使用一條insert語句插入多條。後者的速度比前者的速度要快。

4.4、使用load data infile 批量匯入

當需要批量匯入資料時,如果能有load data infile 批量匯入,就盡量使用。因為 load data infile 語句 匯入資料比insert 語句快。

禁用外來鍵檢查語句

set foreign_key_checks=0;
恢復對外鍵的檢查語句

set foreign_key_checks=1;
禁止自動提交

set autocommit=0;
恢復自動提交

set aotucommit=1;
方法5:

分析表、檢查表、優化表

分析表 :主要是分析關鍵字的分布

檢查表:主要是檢查表是否存在錯誤、

優化表:主要是消除刪除、更新造成的空間浪費。

分析表語句:

analyze table t_order_info
table   op  msg_type    msg_text

cgjr.t_order_info analyze status ok

檢查表語句:

check table t_order_info
優化表:

optimize table t_user_info

效能優化 MySQL資料庫優化

可以從哪幾個方面進行資料庫的優化?如下圖所示 a sql及索引優化 根據需求寫出良好的sql,並建立有效的索引,實現某一種需求可以多種寫法,這時候我們就要選擇一種效率最高的寫法。這個時候就要了解sql優化 b 資料庫表結構優化 根據資料庫的正規化,設計表結構,表結構設計的好直接關係到寫sql語句。c...

資料庫效能優化 MySQL

序 即使有較長的快取有效期和較理想的快取命中率,但是快取的建立和快取過期後的重建都是需要訪問資料庫的。對資料庫寫操作不是很容易引入快取策略。11.1 檢視資料庫狀態 可以通過show status show innodb status 來檢視mysql資料庫的狀態,使用mysqlreport這個第三...

效能優化 mysql資料庫

一 mysql常用命令 1.開啟日誌 1 show global variables like genera 2 set global general log on 3 set global general log off 2.mysql如果開了set autocommit 0,那麼所有的語句一定是...