本節列出一些用於提高查詢處理速度的其他提示
如果您的應用程式發出多個資料庫請求來執行相關更新,將陳述式合併到預存常式中可以提高效能。同樣地,如果您的應用程式基於多個欄位值或大量資料計算單一結果,將計算合併到可載入函式中可以提高效能。這樣產生的快速資料庫操作就可以被其他查詢、應用程式,甚至是用不同程式設計語言編寫的程式碼重複使用。請參閱第 27.2 節,「使用預存常式」和 向 MySQL 新增函式以取得更多資訊。
要修復
ARCHIVE
資料表發生的任何壓縮問題,請使用OPTIMIZE TABLE
。請參閱第 18.5 節,「ARCHIVE 儲存引擎」。如果可能,請將報表分類為「即時」或「統計」,其中統計報表所需的資料僅從定期從即時資料產生的摘要資料表建立。
如果您的資料不太符合列和欄資料表結構,您可以將資料封裝並儲存到
BLOB
欄位中。在這種情況下,您必須在您的應用程式中提供程式碼來封裝和解封資訊,但是這可能會節省讀取和寫入相關值集合的 I/O 操作。對於 Web 伺服器,將圖像和其他二進位資產儲存為檔案,並將路徑名稱儲存在資料庫中,而不是儲存檔案本身。大多數 Web 伺服器在快取檔案方面比資料庫內容更出色,因此使用檔案通常更快。(雖然在這種情況下,您必須自己處理備份和儲存問題。)
如果您需要真正的高速,請查看低階 MySQL 介面。例如,直接存取 MySQL
InnoDB
或MyISAM
儲存引擎,相較於使用 SQL 介面,您可以獲得顯著的速度提升。同樣地,對於使用
NDBCLUSTER
儲存引擎的資料庫,您可能會想研究是否可以利用 NDB API(請參閱 MySQL NDB Cluster API 開發人員指南)。複製功能可以為某些操作帶來效能上的優勢。您可以將用戶端檢索分散到複本之間,以分散負載。為了避免在備份時拖慢來源的速度,您可以使用複本進行備份。請參閱第 19 章,複製。