MySQL資料庫效能優化

2021-08-15 20:40:42 字數 2796 閱讀 6682

1.mysql效能優化就是通過合理安排資源,調整系統引數使mysql執行更快,更節省資源。mysql效能優化包括優化查詢速度、mysql伺服器優化等,原則是減少系統的瓶頸,減少資源的占用,增加系統的反映速度。

2.在mysql資料庫中,我們可以使用show status 語句查詢一些mysql資料庫的效能引數。

(1)語法:show status like 'value';

value引數選擇:

connections:連線mysql伺服器的次數;

uptime:伺服器上線的時間;

slow_queries:慢查詢次數;

com_select:查詢操作的次數;

com_insert:插入操作的次數;

com_update:更新操作的次數;

com_delete:刪除操作的次數;

說明:查詢其他方法的引數直接將value進行替換即可,慢查詢次數引數可以結合慢查詢日誌,找出查詢語句,然後針對慢查詢語句進行表結構或者查詢語句優化;

3.優化查詢

mysql使用ecplian語句和describe語句,用來分析查詢語句(explain [extended] select select_options);

(1)使用extends關鍵字,explain語句將產生附加的資訊。select_options是select語句的查詢選項,包括from where語句;

例如:explain select *from  表名稱;

(2)索引對查詢速度的影響

在mysql中提高效能的乙個最有效的方法是對資料庫中的表建立合理的索引。如果查詢時沒有使用索引,查詢語句將掃瞄表中的所有的記錄。在資料量大的情況下,這樣查詢速度會很慢,建立索引,根據索引快速定位到待查詢的索引,減少查詢的記錄。

說明:《1》使用like關鍵字的查詢

在使用like關鍵字的時候,如果匹配的字串的第乙個關鍵字為『%』的時候,索引不會起作用,只有匹配的第乙個字串『%』不在第乙個位置的時候,索引才會起作用;

例如:explain select *from  test like name '%s';(沒有使用索引);

explain select * from test like name 's%';(使用索引);

《2》使用多列索引的查詢語句

乙個索引可以包含16個字段,對於多列索引,只有條件中使用建立索引是的第乙個欄位的時候,索引才會被使用;   

1.create index index_id_name on test 

(id,name);

2.explain select * from test where name=sdc;

說明:上面首先建立的帶有id和name的多列索引,後面使用查詢語句進行使用到name欄位,但是由於name欄位是在建立索引是的第二個字段,

所以該語句沒有呼叫索引;

1.create index index_id_name on test 

(id,name);

2.explain select * from test where id=1;

說明:上面首先建立的帶有id和name的多列索引,後面使用查詢語句進行使用到id欄位,直接呼叫索引;

《3》使用or關鍵字的索引;

查詢條件中只有or關鍵字,且or關鍵字前後的兩個條件中的列都是索引時,查詢中才使用索引。否則,查詢將不在使用索引。

例如:

1.create index index_id_name on test(id,name);

2.explain select * from test where id=1 or name='sdc';

說明:我們首先建立乙個帶有id和name欄位的索引,噹噹我們使用帶有or查詢的 時候,如果想要使用索引,必須後面所帶的查詢欄位為建立索引時的字段;

《4》優化子查詢

在mysql中,可以使用連線查詢(join)代替子查詢。連線查詢不需要建立臨時表,其查詢速度要比子查詢速度要快,如果查詢中使用索引的話,效能會更好。

4.優化資料庫結構

乙個好的資料庫設計方案對於資料庫的效能常常會起到事半功倍的效果。合理的資料庫結構不僅可以是資料庫占用更小的磁碟空間,而且能夠是查詢速度更快。資料庫結構的設計,需要考慮資料冗餘、查詢和更新速度、欄位的資料型別是否合理等多方面的內容。

(1)將字段多的表分解成多個表;

對於字段比較多的表,如果有些欄位的使用頻率很低,可以將這些字段分離出來形成新錶。當乙個表資料量很大的時候,會由於使用頻率低的字段存在而變慢。

(2)增加中間表

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

首先,分析經常聯合查詢的表中的字段,然後使用這些字段建立乙個中間表,並將原來聯合查詢的表的資料插入到中間表中,最後使用中間表來進行查詢。

(3)增加冗餘字段

設計資料庫的時候應該盡量的遵循正規化理論的約束,盡可能的減少榮冗餘字段,讓資料庫的設計看起來精緻、優雅。但是合理的加入冗餘欄位也是可以提高查詢速度的,這個根據實際的情況進行新增。

(4)優化插入記錄的速度

《1》對於myisam引擎的表,常見優化方法如下:

1.禁用索引

語法:alter table table_name disable keys;(禁用索引);

alter  table table_name enable keys(啟動索引);

2.禁用唯一檢查

語法:set unique_checks=0;(禁用唯一檢查)

set unique_checks=1;(啟動唯一檢查)

效能優化 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,那麼所有的語句一定是...