程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL改善數據裝載效率的策略分析(2)

MySQL改善數據裝載效率的策略分析(2)

編輯:關於MYSQL數據庫

   對具有.MYI 擴展名的索引文件的MyISAM 表使用myisamchk,對具有.ISM 擴展名的索引文件的ISAM 表使用isamchk。在向表中裝入數據後,按如下激活索引:

  

  如果決定使用索引禁用和激活,應該使用第13章中介紹的表修復鎖定協議以阻止服務器同時更改鎖(雖然此時不對表進行修復,但要對它像表修復過程一樣進行修改,因此需要使用相同的鎖定協議)。

  上述數據裝載原理也適用於與需要執行不同操作的客戶機有關的固定查詢。例如,一般希望避免在頻繁更新的表上長時間運行SELECT 查詢。長時間運行SELECT 查詢會產生大量爭用,並降低寫入程序的性能。一種可能的解決方法為,如果執行寫入的主要是INSERT 操作,那麼先將記錄存入一個臨時表,然後定期地將這些記錄加入主表中。如果需要立即訪問新記錄,這不是一個可行的方法。但只要能在一個較短的時間內不訪問它們,就可以使用這個方法。使用臨時表有兩個方面的好處。首先,它減少了與主表上SELECT 查詢語句的爭用,因此,執行更快。其次,從臨時表將記錄裝入主表的總時間較分別裝載記錄的總時間少;相應的索引高速緩存只需在每個批量裝載結束時進行刷新,而不是在每行裝載後刷新。這個策略的一個應用是進入Web 服務器的Web 頁訪問MySQL數據庫。在此情形下,可能沒有保證記錄立即進入主表的較高權限。

  如果數據並不完全是那種在系統非正常關閉事件中插入的單個記錄,那麼減少索引刷新的另一策略是使用MyISAM 表的DELAYED_KEY_WRITE 表創建選項(如果將MySQL用於某些數據錄入工作時可能會出現這種情況)。此選項使索引高速緩存只偶爾刷新,而不是在每次插入後都要刷新。

  如果希望在服務器范圍內利用延遲索引刷新,只要利用--delayed-key-write 選項啟動MySQLd 即可。在此情形下,索引塊寫操作延遲到必須刷新塊以便為其他索引值騰出空間為止,或延遲到執行了一個flush-tables 命令後,或延遲到該索引表關閉。

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