OPTIMIZE TABLEmyisamchk -a 更新鍵值分布統計(先關 MySQL)myisamchk 或 CHECK TABLE 檢查mysqladmin -i10 processlist extended-status 監控狀態mysqladmin debug 獲取鎖定與效能資訊揚長用 SQL 做: 基於 WHERE 找行、JOIN 表、GROUP BY、ORDER BY、DISTINCT
避短不讓 SQL 做: 驗證資料(如日期)、當計算機
UPDATE table SET count=count+1 WHERE key_column=const 極快鍵值讀取 2,000,000 行:
| 資料庫 | NT | Linux |
|---|---|---|
| MySQL | 367 | 249 |
| MySQL_odbc | 464 | - |
| db2_odbc | 1206 | - |
| informix_odbc | 121126 | - |
| ms-sql_odbc | 1634 | - |
| Oracle_odbc | 20800 | - |
| solid_odbc | 877 | - |
| Sybase_odbc | 17614 | - |
插入 350,768 行:
| 資料庫 | NT | Linux |
|---|---|---|
| MySQL | 381 | 206 |
| MySQL_odbc | 619 | - |
| db2_odbc | 3460 | - |
| informix_odbc | 2692 | - |
| ms-sql_odbc | 4012 | - |
| Oracle_odbc | 11291 | - |
| solid_odbc | 1801 | - |
| Sybase_odbc | 4802 | - |
測試環境:MySQL 配 8MB 快取,其他資料庫預設安裝。
back_log:大量新連線時調整thread_cache_size:大量新連線時調整key_buffer_size:索引頁池,可設很大bdb_cache_size:BDB 表記錄與鍵值快取table_cache:大量表與併發連線時調整delay_key_write:需快取所有鍵值寫入時設定log_slow_queries:找出耗時查詢max_heap_table_size:用於 GROUP BYsort_buffer:用於 ORDER BY/GROUP BYmyisam_sort_buffer_size:用於 REPAIR TABLEjoin_buffer_size:無鍵聯結時使用PROCEDURE ANALYSE() 可協助NOT NULL,索引列尤重要INDEX(a,b) 時無需單獨 INDEX(a)INDEX(hostname(10))