程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL數據庫優化技巧之設置裝備擺設技能總結

MySQL數據庫優化技巧之設置裝備擺設技能總結

編輯:MySQL綜合教程

MySQL數據庫優化技巧之設置裝備擺設技能總結。本站提示廣大學習愛好者:(MySQL數據庫優化技巧之設置裝備擺設技能總結)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL數據庫優化技巧之設置裝備擺設技能總結正文


本文實例講述了MySQL數據庫優化技巧的設置裝備擺設辦法。分享給年夜家供年夜家參考,詳細以下:

(一)削減數據庫拜訪

關於可以靜態化的頁面,盡量靜態化

對一個靜態頁面中可以靜態的部分,采取靜態化

部門數據可以生成XML,或許文本文件情勢保留

應用數據緩存技巧,例如: MemCached

(二)優化的檢測辦法

1.用戶體驗檢測

2.Mysql狀況檢測

在Mysql敕令行外面應用show status敕令,獲得以後mysql狀況。

重要存眷以下屬性:

key_read_requests (索引讀的要求數)(key_buffer_size設置影響)

key_reads(索引讀呼應數)

Key_blocks_used

Qcache_*

Open_tables(經由過程table_cache的設置影響)

Opened_tables

table_locks

3. 第三方對象檢測

mysqlreport http://hackmysql.com/mysqlreport

mytop http://jeremy.zawodny.com/mysql/mytop/

體系及Mysql的Log

體系敕令: top, sar

Mysql的Log: slow_query.log

(三)硬件方面的優化

硬件方面,最輕易成為Mysql瓶頸的部門是磁盤,其次是CPU和內存

磁盤方面

應用更快的磁盤,會對Mysql有很好的贊助

應用更多的硬盤,經由過程Raid,可以進步單塊磁盤速度的成績

關於Raid方法,建議采取Raid 0+1 或許 Raid 1+0

CPU

毫無疑問,更高主頻的CPU和更多的CPU數目可以給Mysql更

高的機能

內存

更高的內存,常常可讓Mysql中的更多的數據緩存在內存中,

然則,一個主要的身分是,須要有准確的Mysql的設置裝備擺設

網卡

應用千兆網卡及千兆收集

(四)操作體系方面的優化

1.不應用交流區。假如內存缺乏,增長更多的內存或設置裝備擺設你的體系應用較少內存

2. 不要應用NFS磁盤

3.增長體系和MySQL辦事器的翻開文件數目

應用ulimit –n 65535

4.增長體系的過程和線程數目。

5.封閉不用要的運用,優化硬盤參數,應用hdparm測試

(五)運用級的優化

1.應用多辦事器負載平衡(多台讀和寫,用復制技巧停止數據同步)

2.表的分區 (自界說分區,mysql5.1開端支撐自帶分區功效)

3.應用數據緩存技巧memcached

(六)Mysql設置裝備擺設的優化

1.key_buffer(=512):索引緩沖應用的內存數目

這對MyISAM表來講異常主要,設定在可用內存的25%-30%較好,經由過程檢討狀況值 Key_read_requests和 Key_reads,

可以曉得key_buffer設置能否公道。比例key_reads / key_read_requests應當盡量的低,至多是1:100,1:1000更好 ,不然解釋 key_buffer 設置有點偏小

2.innodb_buffer_pool_size(= 512):索引緩沖應用的內存數目

3.table_cache (=1024):數據表緩存區的尺寸

每當 MySQL 拜訪一個表時,假如在表緩沖區中還有空間,該表就被翻開並放入個中,如許可以更快地拜訪表內容。

經由過程檢討運轉峰值時光的 Open_tables 和 Opened_tables 狀況值,可以決議能否須要調劑 table_cache 的值。

假如你發明 open_tables 的值等於 table_cache,而且發明 opened_tables 狀況值在赓續增加,那末你就須要增長 table_cache 參數值了,

也不克不及自覺地把 table_cache 參數設置成很年夜的值,假如設置得太高,能夠會形成文件描寫符缺乏,從而形成機能不穩固或許銜接掉敗。

4.sort_buffer_size (=256):指定排序用緩沖區的長度

該參數對應的分派內存是每銜接獨有!假如有100個銜接,那末現實分派的總共排序緩沖區年夜小為100 × 6 = 600MB。

所以,關於內存在4GB閣下的辦事器推舉設置為6-8M

5.join_buffer_size :聯系關系查詢用緩沖區的長度

4G內存以上,建議年夜於32M,該參數對應的分派內存也是每銜接獨享!

6.max_connections (=1024):可以復用的線程數目

許可同時銜接MySQL辦事器的客戶數目 ,可以不雅察和估量體系在峰值最年夜的並發銜接數來設置

7.thread_cache(=*):可以復用的線程數目

普通設置為CPU數×2

8.innodb_buffer_pool_size(= 512):innodb表緩存池年夜小

這對Innodb表來講異常主要。Innodb比擬MyISAM表對緩沖更加敏感。MyISAM可以在默許的 key_buffer_size 設置下運轉的可以,

但是Innodb在默許的innodb_buffer_pool_size 設置下卻跟蝸牛似的。

因為Innodb把數據和索引都緩存起來,無需留給操作體系太多的內存,是以假如只須要用Innodb的話則可以設置它高達 70-80% 的可用內存。

一些運用於 key_buffer 的規矩有 -- 假如你的數據量不年夜,而且不會暴增,那末無需把innodb_buffer_pool_size 設置的太年夜了.

9.innodb_flush_logs_at_trx_commit(=1) :事務提交後的日記刷新形式

能否為Innodb比MyISAM慢1000倍而頭年夜?看來或許你忘了修正這個參數了。默許值是 1,這意味著每次提交的更新事務(或許每一個事務以外的語句)都邑刷新到磁盤中,

而這相當消耗資本,特別是沒有電池備用緩存時。許多運用法式,特別是從 MyISAM改變過去的那些,把它的值設置為 2 便可以了,也就是不把日記刷新到磁盤上,

而只刷新到操作體系的緩存上。日記依然會每秒刷新到磁盤中去,是以平日不會喪失每秒1-2次更新的消費。假如設置為0就快許多了,不外也絕對不平安了,

MySQL辦事器瓦解時就會喪失一些事務。設置為2批示喪失刷新到操作體系緩存的那部門事務.

願望本文所述對年夜家MySQL數據庫計有所贊助。

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