8個MySQL資料庫性能優化技巧

8個MySQL性能優化技巧

 

你完成瞭你的品牌新的應用程式,一切工作就像一個魅力。用戶來使用你的網絡。每個人是幸福的。

  www.aiwalls.com  

然後,突然間,一個大爆發的用戶殺死你的MySQL伺服器,您的網站已關閉。出瞭什麼問題?你怎麼能阻止它嗎?

 

以下是MySQL性能優化的一些技巧,將幫助你,幫助你的資料庫。

大處著眼

 

在早期的發展階段,你應該知道預期到您的應用程式的用戶數。如果你希望很多用戶來說,你應該想想大,從一開始,計劃進行復制,可擴展性和性能。

 

但是,如果你優化你的SQL代碼,架構和索引策略,也許你不會需要大環境。你必須總是三思而後行的性能和可擴展性是不一樣的。  www.aiwalls.com  

 

請務必使用EXPLAIN

 

EXPLAIN語句可以被用來作為獲取信息的方式MySQL如何執行SELECT語句的代名詞DESCRIBE。

 

當你前面一個關鍵字EXPLAIN SELECT語句,MySQL的顯示信息的查詢執行計劃的優化。也就是說,MySQL的說明它將如何處理SELECT,包括信息表加入的順序。可以使用EXPLAIN擴展的提供額外的信息。

  www.aiwalls.com  

選擇正確的數據類型

 

通常存儲在磁盤上(除瞭一些資料庫,內存資料庫一樣,它是存儲在內存中)。這意味著,為瞭獲取信息,為您的資料庫,它必須從磁盤讀取該信息,並把它變成一個結果集,您可以使用。磁盤I / O是極其緩慢的,尤其是在比較其他形式的數據存儲。

 

當你的資料庫的增長要大,開始讀取時間要長。設計拙劣的資料庫處理這個問題比他們實際需要的磁盤上分配更多的空間。這意味著該資料庫占用空間的磁盤的使用效率低下。

 

選擇正確的數據類型,可以幫助確保我們存儲的數據,使資料庫盡可能的小。為此,我們隻選擇我們所需要的數據類型。

 

使用持久連接

 

使用永久連接的原因是減少數量的連接是相當昂貴的,即使他們更快的與MySQL與大多數其他資料庫。

 

有一些爭論這個話題,在網絡上mysqli擴展已禁用持久性連接功能,所以我會寫更多關於這個主題。持久連接的唯一的缺點是,如果你有多個並發連接,可以達到max_connections設置。這是很容易改變Apache的設置,所以我不認為這是原因為什麼你不應該使用持久連接。

 

持久連接是特別有用的,如果你有另一臺計算機上的資料庫伺服器。由於上述缺點,明智地使用它們。

 

瞭解查詢緩存

 

查詢緩存存儲的SELECT語句的文本,連同相應的結果發送到客戶端。如果相同的語句被接收後,伺服器從查詢緩存中,而不是分析和再次執行該語句檢索結果。查詢緩存是共享的會話之間,這樣的結果集所產生的一個客戶端可以發送另一個客戶端發出的相同的查詢。

 

查詢緩存的環境中,可能是有用的,你有表不經常改變,伺服器接收到許多相同的查詢。對於許多Web伺服器產生許多動態頁面的基於資料庫的內容,這是一個典型的情況。

 

查詢緩存不返回過時的數據。在查詢緩存表被修改時,任何相關的條目將被刷新。

 

你怎麼找到我的MySQL查詢緩存是工作或沒有?

MySQL提供的統計資料,隻需鍵入下面的命令在mysql>提示符下:

mysql> show variables like 'query%';  

 

不要使用索引列的功能

 

列上的索引可以是偉大的性能增益,但如果你使用該列中的函數,指數是從來沒有使用過。

 

總是嘗試重寫查詢不使用索引列的功能。

WHERE TO_DAYS(CURRENT_DATE) – TO_DAYS(event_date) <= 7  

 

可能是

WHERE event_date >= '2011/03/15' – INTERVAL 7 DAYS  

 

今天的日期是從PHP生成。這樣一來,指數列EVENT_DATE的查詢緩存內可存儲和查詢。

 

瞭解禪宗的SQL編碼

 

SQL代碼是優化資料庫性能的基礎。主SQL編碼技術,如重寫子查詢的SQL語句使用連接,消除瞭連接和類似的遊標。

 

通過編寫巨大SQL代碼資料庫的性能將是巨大的。

 

使用ON DUPLICATE KEY UPDATE

 

如果你指定ON DUPLICATE KEY UPDATE,將某行插入,會導致在一個UNIQUE索引或PRIMARY KEY重復的值,更新舊行。

INSERT INTO wordcount (word, count) VALUES ('a_word',1) ON DUPLICATE KEY UPDATE count=count+1;  

 

您保存訪問伺服器(然後選擇更新),清理你的代碼刪除所有,如果record_exists插入其他更新。

 

如果按照此提示,資料庫將不勝感激給你。

發佈留言