首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Monty 談 MySQL 優化(二):應用優化、可移植性、API 選擇與編譯安裝調優

     編輯:MySQL 資料庫相關知識

六、優化應用

  • 集中精力解決瓶頸
  • 編寫應用時決定優先級:速度 vs OS 可移植性 vs SQL 服務器可移植性
  • 使用持久連線
  • 應用層快取資料減輕 SQL 服務器負載
  • 不查詢不需要的列,禁用 SELECT *
  • 全面測試,重點在最壞合理負載下的整體測試,模組化方式便於替換瓶頸模組
  • 批量修改用 LOCK TABLES 集中多個 UPDATE/DELETE

七、使用可移植 API

  • Perl DBI/DBD
  • ODBC
  • JDBC
  • Python (或其他通用 SQL 介面語言)
  • 僅用所有目標 SQL 服務器通用或易模擬的 SQL 結構,www.mysql.com 的 Crash-me 頁可協助測試
  • 為 OS/SQL 服務器寫包裝程式提供缺失功能

八、需要更快速度時

  • 找出瓶頸 (CPU/磁碟/記憶體/SQL服務器/OS/API/應用) 集中解決
  • 用給予更快速度/靈活性的擴展功能
  • 逐漸深入了解 SQL 服務器,用最快 SQL 結構避開瓶頸
  • 優化表佈局與查詢
  • 用複製獲得更快 SELECT 速度
  • 慢速網路連線資料庫用壓縮客戶/服務端協議
  • 不怕首版不完美,解決問題時持續優化

九、優化 MySQL 服務器

  • 選擇編譯器與編譯選項
  • 為系統找最佳啟動選項
  • 研讀參考手冊與 Paul DuBois 《MySQL》著作
  • 多用 EXPLAIN SELECT、SHOW VARIABLES、SHOW STATUS、SHOW PROCESSLIST
  • 了解查詢優化器工作原理
  • 優化表格式
  • 維護表 (myisamchk/CHECK TABLE/OPTIMIZE TABLE)
  • 用 MySQL 擴展功能加速
  • 常用函數考慮寫 UDF
  • 非必要勿用表級/列級 GRANT
  • 購買技術支援獲專業協助

十、編譯安裝 MySQL

  • 挑選最佳編譯器通常獲 10-30% 效能提升
  • Linux/Intel 平台用 pgcc (GCC 奔騰優化版) 編譯,但二進制碼僅能跑 Intel 奔騰 CPU
  • 特定平台用手冊推薦優化選項
  • 原生編譯器(如 Sparc 的 Sun Workshop) 通常優於 GCC,但不絕對
  • 用將使用的字符集編譯
  • 靜態編譯 mysqld (--with-mysqld-ldflags=all-static) 並 strip 整理
  • 關鍵: MySQL 不用 C++ 擴展,**不帶擴展支援編譯可獲巨大效能提升**
  • OS 支援原生執行緒時用原生執行緒 (非 mit-pthreads)
  • 用 MySQL 基準測試驗證最終二進制碼
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved