程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql優化之mysql優化工具推薦介紹

mysql優化之mysql優化工具推薦介紹

編輯:關於MYSQL數據庫
MySQL優化五大技巧:

  MySQL優化1. 優化你的MySQL查詢緩存

  在MySQL服務器上進行查詢,可以啟用高速查詢緩存。讓數據庫引擎在後台悄悄的處理是提高性能的最有效方法之一。當同一個查詢被執行多次時,如果結果是從緩存中提取,那是相當快的。

  但主要的問題是,它是那麼容易被隱藏起來以至於我們大多數程序員會忽略它。在有些處理任務中,我們實際上是可以阻止查詢緩存工作的。

  1. // query cache does NOT work

  2. $r = MySQL_query("SELECT username FROM user WHERE signup_date >= CURDATE()");

  3.

  4. // query cache works!

  5. $today = date("Y-m-d");

  6. $r = MySQL_query("SELECT username FROM user WHERE signup_date >= '$today'");

  7.

  8. // query cache does NOT work

  9. $r = MySQL_query("SELECT username FROM user WHERE signup_date >= CURDATE()");

  10.

  11. // query cache works!

  12. $today = date("Y-m-d");

  13. $r = MySQL_query("SELECT username FROM user WHERE signup_date >= '$today'");

  MySQL優化2. 用EXPLAIN使你的SELECT查詢更加清晰

  使用EXPLAIN關鍵字是另一個MySQL優化技巧,可以讓你了解MySQL正在進行什麼樣的查詢操作,這可以幫助你發現瓶頸的所在,並顯示出查詢或表結構在哪裡出了問題。

  EXPLAIN查詢的結果,可以告訴你那些索引正在被引用,表是如何被掃描和排序的等等。

  實現一個SELECT查詢(最好是比較復雜的一個,帶joins方式的),在裡面添加上你的關鍵詞解釋,在這裡我們可以使用PHPMyAdmin,他會告訴你表中的結果。舉例來說,假如當我在執行joins時,正忘記往一個索引中添加列,EXPLAIN能幫助我找到問題的所在。

  MySQL優化3. 利用LIMIT 1取得唯一行

  有時,當你要查詢一張表是,你知道自己只需要看一行。你可能會去的一條十分獨特的記錄,或者只是剛好檢查了任何存在的記錄數,他們都滿足了你的WHERE子句。

  在這種情況下,增加一個LIMIT 1會令你的查詢更加有效。這樣數據庫引擎發現只有1後將停止掃描,而不是去掃描整個表或索引。

  1. // do I have any users from Alabama?

  2. // what NOT to do:

  3. $r = MySQL_query("SELECT * FROM user WHERE state = 'Alabama'");

  4. if (MySQL_num_rows($r) > 0) {

  5. // ...

  6. }

  7. // much better:

  8. $r = MySQL_query("SELECT 1 FROM user WHERE state = 'Alabama' LIMIT 1");

  9. if (MySQL_num_rows($r) > 0) {

  10. // ...

  11. }

  MySQL優化4. 索引中的檢索字段

  索引不僅是主鍵或唯一鍵。如果你想搜索表中的任何列,你應該一直指向索引。

  MySQL優化5. 保證連接的索引是相同的類型

  如果應用程序中包含多個連接查詢,你需要確保你鏈接的列在兩邊的表上都被索引。這會影響MySQL如何優化內部聯接操作。

  此外,加入的列,必須是同一類型。例如,你加入一個DECIMAL列,而同時加入另一個表中的int列,MySQL將無法使用其中至少一個指標。即使字符編碼必須同為字符串類型。

  1. // looking for companIEs in my state

  2. $r = MySQL_query("SELECT company_name FROM users

  3. LEFT JOIN companies ON (users.state = companIEs.state)

  4. WHERE users.id = $user_id");

  5.

  6. // both state columns should be indexed

  7. // and they both should be the same type and character encoding

  8. // or MySQL might do full table scans

  MySQL 優化工具推薦:

  MySQL Optimize Analysis Description:

  —“一鍵優化”功能,可以優化本地/遠程需要優化的機器,將繁瑣的優化工作“傻瓜”式操作

  —根據您的業務需求Step By Step優化的MySQL服務器參數,起到指引的作用,簡化用戶操作

  —不可能完全記住MySQL中的300多個配置參數每個的作用,在配置管理時就可以知道每個參數的作用,起到指引的作用

  —查看手冊或者去google還是比較繁瑣,輸入關鍵字檢索,很快就可以找到,配置信息的內容和參數

  —通過web界面修改MySQL配置參數,簡化操作

  —修改配置信息不需要重啟直接生效,可以反復修改,所見即所得,提高效率

  —修改數據庫配置需要有一定的先決條件,現在只要打開一個浏覽器就可以

  —根據機器、操作系統信息推薦需要配置優化的參數,起到指引的作用,簡化用戶操作

  MySQL數據庫目前廣泛的應用在各種個人、商務系統中,各種技術都比較成熟。MySQL優化技巧和MySQL優化工具都需通過在互聯網上學習,並動手實踐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved