JAVA天下

          小小博客,包羅萬有.
          隨筆 - 16, 文章 - 5, 評論 - 11, 引用 - 0
          數據加載中……

          數據庫插入速度和讀取速度的調整記錄

          (1)提高數據庫插入性能中心思想:盡量將數據一次性寫入到Data File和減少數據庫的checkpoint 操作。這次修改了下面四個配置項:
          1)將 innodb_flush_log_at_trx_commit 配置設定為0;按過往經驗設定為0,插入速度會有很大提高。
          • 0: Write the log buffer to the log file and flush the log file every second, but do nothing at transaction commit.
          • 1:the log buffer is written out to the log file at each transaction commit and the flush to disk operation is performed on the log file
          • 2:the log buffer is written out to the file at each commit, but the flush to disk operation is not performed on it
          2)將 innodb_autoextend_increment 配置由于默認8M 調整到 128M
          • 此配置項作用主要是當tablespace 空間已經滿了后,需要MySQL系統需要自動擴展多少空間,每次tablespace 擴展都會讓各個SQL 處于等待狀態。增加自動擴展Size可以減少tablespace自動擴展次數。
          3)將 innodb_log_buffer_size 配置由于默認1M 調整到 16M
          • 此配置項作用設定innodb 數據庫引擎寫日志緩存區;將此緩存段增大可以減少數據庫寫數據文件次數。
          4)將 innodb_log_file_size 配置由于默認 8M 調整到 128M
          • 此配置項作用設定innodb 數據庫引擎UNDO日志的大小;從而減少數據庫checkpoint操作。
          經過以上調整,系統插入速度由于原來10分鐘幾萬條提升至1秒1W左右;注:以上參數調整,需要根據不同機器來進行實際調整。特別是 innodb_flush_log_at_trx_commit、innodb_log_buffer_sizeinnodb_log_file_size 需要謹慎調整;因為涉及MySQL本身的容災處理。

          (2)提升數據庫讀取速度,重數據庫層面上讀取速度提升主要由于幾點:簡化SQL、加索引和分區; 經過檢查程序SQL已經是最簡單,查詢條件上已經增加索引。我們只能用武器:表分區。
          • 數據庫 MySQL分區前準備:在MySQL中,表空間就是存儲數據和索引的數據文件。
            • 將S11數據庫由于同享tablespace 修改為支持多個tablespace;
            • 將wb_user_info_sina 和 wb_user_info_tx 兩個表修改為各自獨立表空間;(Sina:1700W數據,2.6G 大數據文件,Tencent 1400W,2.3G大數據文件);
          • 分區操作:
            • 將現有的主鍵和索引先刪除
            • 重現建立id,uid 的聯合主鍵
            • 再以 uid 為鍵值進行分區。這時候到/var/data/mysql 查看數據文件,可以看到兩個大表各自獨立表空間已經分割成若干個較少獨立分區空間。(這時候若以uid 為檢索條件進行查詢,并不提升速度;因為鍵值只是安排數據存儲的分區并不會建立分區索引。我非常郁悶這點比Oracle 差得不是一點半點。)
            • 再以 uid 字段上進行建立索引。再次到/var/data/mysql 文件夾查看數據文件,非常郁悶地發現各個分區Size竟然大了。MySQL還是老樣子將索引與數據存儲在同一個tablespace里面。若能index 與 數據分離能夠更加好管理。
          經過以上調整,暫時沒能體現出系統讀取速度提升;基本都是在 2~3秒完成5K數據更新。


          MK-TIANYI

          posted on 2012-05-23 22:19 天一 閱讀(1147) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 温宿县| 太原市| 乌兰浩特市| 白沙| 确山县| 旬邑县| 甘泉县| 积石山| 双辽市| 永吉县| 文水县| 虎林市| 石狮市| 铁岭市| 高台县| 阿克陶县| 大理市| 通山县| 明水县| 淮南市| 乌什县| 会东县| 柳河县| 永仁县| 尚义县| 黔西县| 清河县| 平度市| 田东县| 文化| 根河市| 肥东县| 宾阳县| 贵定县| 宜兰县| 维西| 桐庐县| 资溪县| 昌邑市| 龙海市| 清水河县|