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

Monty說MySQL的優化(二)

編輯:關於MYSQL數據庫

  六、優化應用

  應該集中精力解決問題。

  在編寫應用時,應該決定什麼是最重要的:

  速度

  操作系統間的可移植性

  SQL服務器間的可移植性

  使用持續的連接。.

  緩存應用中的數據以減少SQL服務器的負載。

  不要查詢應用中不需要的列。

  不要使用SELECT * FROM table_name...

  測試應用的所有部分,但將大部分精力放在在可能最壞的合理的負載下的測試整體應用。通過以一種模塊化的方式進行,你應該能用一個快速“啞模塊”替代找到的瓶頸,然後很容易地標出下一個瓶頸。

  如果在一個批處理中進行大量修改,使用LOCK TABLES。例如將多個UPDATES或DELETES集中在一起。

  七、應該使用可移植的應用

  Perl DBI/DBD

  ODBC

  JDBC

  Python(或其他有普遍SQL接口的語言)

  你應該只使用存在於所有目的SQL服務器中或可以很容易地用其他構造模擬的SQL構造。www.MySQL.com上的Crash-me頁可以幫助你。

  為操作系統/SQL服務器編寫包裝程序來提供缺少的功能。

  八、如果你需要更快的速度,你應該:

  找出瓶頸(CPU、磁盤、內存、SQL服務器、操作系統、API或應用)並集中全力解決。

  使用給予你更快速度/靈活性的擴展。

  逐漸了解SQL服務器以便能為你的問題使用可能最快的SQL構造並避免瓶頸。

  優化表布局和查詢。

  使用復制以獲得更快的選擇(select)速度。

  如果你有一個慢速的網絡連接數據庫,使用壓縮客戶/服務器協議。

  不要害怕時應用的第一個版本不能完美地移植,在你解決問題時,你總是可以在以後優化它。

  九、優化MySQL

  挑選編譯器和編譯選項。

  位你的系統尋找最好的啟動選項。

  通讀MySQL參考手冊並閱讀Paul DuBiOS的《MySQL》一書。(已有中文版-譯注)

  多用EXPLAIN SELECT、SHOW VARIABLES、SHOW STATUS和SHOW PROCESSLIST。

  了解查詢優化器的工作原理。

  優化表的格式。

  維護你的表(myisamchk、CHECK TABLE、 OPTIMIZE TABLE)

  使用MySQL的擴展功能以讓一切快速完成。

  如果你注意到了你將在很多場合需要某些函數,編寫MySQL UDF函數。

  不要使用表級或列級的GRANT,除非你確實需要。

  購買MySQL技術支持以幫助你解決問題:)

  十、編譯和安裝MySQL

  通過位你的系統挑選可能最好的編譯器,你通常可以獲得10-30%的性能提高。

  在Linux/Intel平台上,用pgcc(gcc的奔騰芯片優化版)編譯MySQL。然而,二進制代碼將只能運行在Intel奔騰CPU上。

  對於一種特定的平台,使用MySQL參考手冊上推薦的優化選項。

  一般地,對特定CPU的原生編譯器(如Sparc的Sun Workshop)應該比gcc提供更好的性能,但不總是這樣。

  用你將使用的字符集編譯MySQL。

  靜態編譯生成mysqld的執行文件(用--with-mysqld-ldflags=all-static)並用strip sql/MySQLd整理最終的執行文件。

  注意,既然MySQL不使用C++擴展,不帶擴展支持編譯MySQL將贏得巨大的性能提高。

  如果操作系統支持原生線程,使用原生線程(而不用mit-pthreads)。

  用MySQL基准測試來測試最終的二進制代碼。

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