电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL配置文件my.cnf優化詳解

瀏覽:8日期:2023-10-16 16:12:18
MySQL 5.5.13參數說明:[client]character-set-server = utf8port = 3306socket = /data/mysql/3306/mysql.sock[mysqld]character-set-server = utf8user = mysqlport = 3306socket = /data/mysql/3306/mysql.sockbasedir = /usr/local/webserver/mysqldatadir = /data/mysql/3306/datalog-error = /data/mysql/3306/mysql_error.logpid-file = /data/mysql/3306/mysql.pid# table_cache 參數設置表高速緩存的數目。每個連接進來,都會至少打開一個表緩存。#因此, table_cache 的大小應與 max_connections 的設置有關。例如,對于 200 個#并行運行的連接,應該讓表的緩存至少有 200 × N ,這里 N 是應用可以執行的查詢#的一個聯接中表的最大數量。此外,還需要為臨時表和文件保留一些額外的文件描述符。# 當 Mysql 訪問一個表時,如果該表在緩存中已經被打開,則可以直接訪問緩存;如果#還沒有被緩存,但是在 Mysql 表緩沖區中還有空間,那么這個表就被打開并放入表緩#沖區;如果表緩存滿了,則會按照一定的規則將當前未用的表釋放,或者臨時擴大表緩存來存放,使用表緩存的好處是可以更快速地訪問表中的內容。執行 flush tables 會#清空緩存的內容。一般來說,可以通過查看數據庫運行峰值時間的狀態值 Open_tables #和 Opened_tables ,判斷是否需要增加 table_cache 的值(其中 open_tables 是當#前打開的表的數量, Opened_tables 則是已經打開的表的數量)。即如果open_tables接近table_cache的時候,并且Opened_tables這個值在逐步增加,那就要考慮增加這個#值的大小了。還有就是Table_locks_waited比較高的時候,也需要增加table_cache。open_files_limit = 10240table_cache = 512#非動態變量,需要重啟服務# 指定MySQL可能的連接數量。當MySQL主線程在很短的時間內接收到非常多的連接請求,該參數生效,主線程花費很短的時間檢查連接并且啟動一個新線程。back_log參數的值指出在MySQL暫時停止響應新請求之前的短時間內多少個請求可以被存在堆棧中。如果系統在一個短時間內有很多連接,則需要增大該參數的值,該參數值指定到來的TCP/IP連接的偵聽隊列的大小。不同的操作系統在這個隊列大小上有它自己的限制。試圖設定back_log高于你的操作系統的限制將是無效的。默認值為50。對于Linux系統推薦設置為小于512的整數。back_log = 600#MySQL允許最大連接數max_connections = 5000#可以允許多少個錯誤連接max_connect_errors = 6000#使用–skip-external-locking MySQL選項以避免外部鎖定。該選項默認開啟external-locking = FALSE# 設置最大包,限制server接受的數據包大小,避免超長SQL的執行有問題 默認值為16M,當MySQL客戶端或mysqld服務器收到大于max_allowed_packet字節的信息包時,將發出“信息包過大”錯誤,并關閉連接。對于某些客戶端,如果通信信息包過大,在執行查詢期間,可能會遇到“丟失與MySQL服務器的連接”錯誤。默認值16M。#dev-doc: http://dev.mysql.com/doc/refman/5.5/en/packet-too-large.htmlmax_allowed_packet = 32M# Sort_Buffer_Size 是一個connection級參數,在每個connection(session)第一次需要使用這個buffer的時候,一次性分配設置的內存。#Sort_Buffer_Size 并不是越大越好,由于是connection級的參數,過大的設置+高并發可能會耗盡系統內存資源。例如:500個連接將會消耗 500*sort_buffer_size(8M)=4G內存#Sort_Buffer_Size 超過2KB的時候,就會使用mmap() 而不是 malloc() 來進行內存分配,導致效率降低。#技術導讀 http://blog.webshuo.com/2011/02/16/mysql-sort_buffer_size/#dev-doc: http://dev.mysql.com/doc/refman/5.5/en/server-parameters.html#explain select*from table where order limit;出現filesort#屬重點優化參數sort_buffer_size = 8M#用于表間關聯緩存的大小join_buffer_size = 1M# 服務器線程緩存這個值表示可以重新利用保存在緩存中線程的數量,當斷開連接時如果緩存中還有空間,那么客戶端的線程將被放到緩存中,如果線程重新被請求,那么請求將從緩存中讀取,如果緩存中是空的或者是新的請求,那么這個線程將被重新創建,如果有很多新的線程,增加這個值可以改善系統性能.通過比較 Connections 和 Threads_created 狀態的變量,可以看到這個變量的作用thread_cache_size = 300# 設置thread_concurrency的值的正確與否, 對mysql的性能影響很大, 在多個cpu(或多核)的情況下,錯誤設置了thread_concurrency的值, 會導致mysql不能充分利用多cpu(或多核), 出現同一時刻只能一個cpu(或核)在工作的情況。thread_concurrency應設為CPU核數的2倍. 比如有一個雙核的CPU, 那么thread_concurrency的應該為4; 2個雙核的cpu, thread_concurrency的值應為8#屬重點優化參數thread_concurrency = 8# 對于使用MySQL的用戶,對于這個變量大家一定不會陌生。前幾年的MyISAM引擎優化中,這個參數也是一個重要的優化參數。但隨著發展,這個參數也爆露出來一些問題。機器的內存越來越大,人們也都習慣性的把以前有用的參數分配的值越來越大。這個參數加大后也引發了一系列問題。我們首先分析一下 query_cache_size的工作原理:一個SELECT查詢在DB中工作后,DB會把該語句緩存下來,當同樣的一個SQL再次來到DB里調用時,DB在該表沒發生變化的情況下把結果從緩存中返回給Client。這里有一個關建點,就是DB在利用Query_cache工作時,要求該語句涉及的表在這段時間內沒有發生變更。那如果該表在發生變更時,Query_cache里的數據又怎么處理呢?首先要把Query_cache和該表相關的語句全部置為失效,然后在寫入更新。那么如果Query_cache非常大,該表的查詢結構又比較多,查詢語句失效也慢,一個更新或是Insert就會很慢,這樣看到的就是Update或是Insert怎么這么慢了。所以在數據庫寫入量或是更新量也比較大的系統,該參數不適合分配過大。而且在高并發,寫入量大的系統,建系把該功能禁掉。#重點優化參數(主庫 增刪改-MyISAM)query_cache_size = 512M#指定單個查詢能夠使用的緩沖區大小,缺省為1Mquery_cache_limit = 2M#默認是4KB,設置值大對大數據查詢有好處,但如果你的查詢都是小數據查詢,就容易造成內存碎片和浪費#查詢緩存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%#如果查詢緩存碎片率超過20%,可以用FLUSH QUERY CACHE整理緩存碎片,或者試試減小query_cache_min_res_unit,如果你的查詢都是小數據量的話。#查詢緩存利用率 = (query_cache_size – Qcache_free_memory) / query_cache_size * 100%#查詢緩存利用率在25%以下的話說明query_cache_size設置的過大,可適當減小;查詢緩存利用率在80%以上而且Qcache_lowmem_prunes > 50的話說明query_cache_size可能有點小,要不就是碎片太多。#查詢緩存命中率 = (Qcache_hits – Qcache_inserts) / Qcache_hits * 100%query_cache_min_res_unit = 2kdefault-storage-engine = MyISAM#限定用于每個數據庫線程的棧大小。默認設置足以滿足大多數應用thread_stack = 192K# 設定默認的事務隔離級別.可用的級別如下:# READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE# 1.READ UNCOMMITTED-讀未提交2.READ COMMITTE-讀已提交3.REPEATABLE READ -可重復讀4.SERIALIZABLE -串行transaction_isolation = READ-COMMITTED# tmp_table_size 的默認大小是 32M。如果一張臨時表超出該大小,MySQL產生一個 The table tbl_name is full 形式的錯誤,如果你做很多高級 GROUP BY 查詢,增加 tmp_table_size 值。tmp_table_size = 246Mmax_heap_table_size = 246M#索引緩存大小: 它決定了數據庫索引處理的速度,尤其是索引讀的速度key_buffer_size = 512M# MySql讀入緩沖區大小。對表進行順序掃描的請求將分配一個讀入緩沖區,MySql會為它分配一段內存緩沖區。read_buffer_size變量控制這一緩沖區的大小。如果對表的順序掃描請求非常頻繁,并且你認為頻繁掃描進行得太慢,可以通過增加該變量值以及內存緩沖區大小提高其性能。read_buffer_size = 4M# MySql的隨機讀(查詢操作)緩沖區大小。當按任意順序讀取行時(例如,按照排序順序),將分配一個隨機讀緩存區。進行排序查詢時,MySql會首先掃描一遍該緩沖,以避免磁盤搜索,提高查詢速度,如果需要排序大量數據,可適當調高該值。但MySql會為每個客戶連接發放該緩沖空間,所以應盡量適當設置該值,以避免內存開銷過大。read_rnd_buffer_size = 16M#批量插入數據緩存大小,可以有效提高插入效率,默認為8Mbulk_insert_buffer_size = 64M# MyISAM表發生變化時重新排序所需的緩沖myisam_sort_buffer_size = 128M# MySQL重建索引時所允許的最大臨時文件的大小 (當 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE).# 如果文件大小比此值更大,索引會通過鍵值緩沖創建(更慢)myisam_max_sort_file_size = 10G# 如果一個表擁有超過一個索引, MyISAM 可以通過并行排序使用超過一個線程去修復他們.# 這對于擁有多個CPU以及大量內存情況的用戶,是一個很好的選擇.myisam_repair_threads = 1#自動檢查和修復沒有適當關閉的 MyISAM 表myisam_recoverinteractive_timeout = 120wait_timeout = 120innodb_data_home_dir = /data/mysql/3306/data#表空間文件 重要數據innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend#這個參數用來設置 InnoDB 存儲的數據目錄信息和其它內部數據結構的內存池大小,類似于Oracle的library cache。這不是一個強制參數,可以被突破。innodb_additional_mem_pool_size = 16M# 這對Innodb表來說非常重要。Innodb相比MyISAM表對緩沖更為敏感。MyISAM可以在默認的 key_buffer_size 設置下運行的可以,然而Innodb在默認的 innodb_buffer_pool_size 設置下卻跟蝸牛似的。由于Innodb把數據和索引都緩存起來,無需留給操作系統太多的內存,因此如果只需要用Innodb的話則可以設置它高達 70-80% 的可用內存。一些應用于 key_buffer 的規則有 — 如果你的數據量不大,并且不會暴增,那么無需把 innodb_buffer_pool_size 設置的太大了innodb_buffer_pool_size = 512M#文件IO的線程數,一般為 4,但是在 Windows 下,可以設置得較大。innodb_file_io_threads = 4# 在InnoDb核心內的允許線程數量.# 最優值依賴于應用程序,硬件以及操作系統的調度方式.# 過高的值可能導致線程的互斥顛簸.innodb_thread_concurrency = 8# 如果將此參數設置為1,將在每次提交事務后將日志寫入磁盤。為提供性能,可以設置為0或2,但要承擔在發生故障時丟失數據的風險。設置為0表示事務日志寫入日志文件,而日志文件每秒刷新到磁盤一次。設置為2表示事務日志將在提交時寫入日志,但日志文件每次刷新到磁盤一次。innodb_flush_log_at_trx_commit = 2#此參數確定些日志文件所用的內存大小,以M為單位。緩沖區更大能提高性能,但意外的故障將會丟失數據.MySQL開發人員建議設置為1-8M之間innodb_log_buffer_size = 16M#此參數確定數據日志文件的大小,以M為單位,更大的設置可以提高性能,但也會增加恢復故障數據庫所需的時間innodb_log_file_size = 128M#為提高性能,MySQL可以以循環方式將日志文件寫到多個文件。推薦設置為3Minnodb_log_files_in_group = 3#推薦閱讀 http://www.taobaodba.com/html/221_innodb_max_dirty_pages_pct_checkpoint.html# Buffer_Pool中Dirty_Page所占的數量,直接影響InnoDB的關閉時間。參數innodb_max_dirty_pages_pct 可以直接控制了Dirty_Page在Buffer_Pool中所占的比率,而且幸運的是innodb_max_dirty_pages_pct是可以動態改變的。所以,在關閉InnoDB之前先將innodb_max_dirty_pages_pct調小,強制數據塊Flush一段時間,則能夠大大縮短 MySQL關閉的時間。innodb_max_dirty_pages_pct = 90# InnoDB 有其內置的死鎖檢測機制,能導致未完成的事務回滾。但是,如果結合InnoDB使用MyISAM的lock tables 語句或第三方事務引擎,則InnoDB無法識別死鎖。為消除這種可能性,可以將innodb_lock_wait_timeout設置為一個整數值,指示 MySQL在允許其他事務修改那些最終受事務回滾的數據之前要等待多長時間(秒數)innodb_lock_wait_timeout = 120#獨享表空間(關閉)innodb_file_per_table = 0#start mysqld with –slow-query-log-file=/data/mysql/3306/slow.logslow_query_loglong_query_time = 1replicate-ignore-db = mysqlreplicate-ignore-db = testreplicate-ignore-db = information_schema#配置從庫上的更新操作是否寫二進制文件,如果這臺從庫,還要做其他從庫的主庫,那么就需要打這個參數,以便從庫的從庫能夠進行日志同步這個參數要和—logs-bin一起使用log-slave-updateslog-bin = /data/mysql/3306/binlog/binlogbinlog_cache_size = 4M#STATEMENT,ROW,MIXED# 基于SQL語句的復制(statement-based replication, SBR),基于行的復制(row-based replication, RBR),混合模式復制(mixed-based replication, MBR)。相應地,binlog的格式也有三種:STATEMENT,ROW,MIXED。binlog_format = MIXEDmax_binlog_cache_size = 64Mmax_binlog_size = 1Grelay-log-index = /data/mysql/3306/relaylog/relaylogrelay-log-info-file = /data/mysql/3306/relaylog/relaylogrelay-log = /data/mysql/3306/relaylog/relaylogexpire_logs_days = 30skip-name-resolve#master-connect-retry = 10slave-skip-errors = 1032,1062,126,1114,1146,1048,1396server-id = 1[mysqldump]quickmax_allowed_packet = 32M[myisamchk]key_buffer_size = 256Msort_buffer_size = 256Mread_buffer = 2Mwrite_buffer = 2M[mysqlhotcopy]interactive-timeout轉自:http://blog.csdn.net/xujinyang/article/details/7276996
標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 氧化铝球_高铝球_氧化铝研磨球-淄博誉洁陶瓷新材料有限公司 | 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 阜阳成人高考_阜阳成考报名时间_安徽省成人高考网 | 净气型药品柜-试剂柜-无管道净气型通风柜-苏州毕恩思 | AR开发公司_AR增强现实_AR工业_AR巡检|上海集英科技 | 纸塑分离机-纸塑分离清洗机设备-压力筛-碎浆机厂家金双联环保 | 废旧物资回收公司_广州废旧设备回收_报废设备物资回收-益美工厂设备回收公司 | 东莞市海宝机械有限公司-不锈钢分选机-硅胶橡胶-生活垃圾-涡电流-静电-金属-矿石分选机 | 焊缝跟踪系统_激光位移传感器_激光焊缝跟踪传感器-创想智控 | 大型果蔬切片机-水果冬瓜削皮机-洗菜机切菜机-肇庆市凤翔餐饮设备有限公司 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 土壤墒情监测站_土壤墒情监测仪_土壤墒情监测系统_管式土壤墒情站-山东风途物联网 | 南京兰江泵业有限公司-水解酸化池潜水搅拌机-絮凝反应池搅拌机-好氧区潜水推进器 | 南汇8424西瓜_南汇玉菇甜瓜-南汇水蜜桃价格 | 伶俐嫂培训学校_月嫂培训班在哪里报名学费是多少_月嫂免费政府培训中心推荐 | 七维官网-水性工业漆_轨道交通涂料_钢结构漆 | 沈阳网站建设_沈阳网站制作_沈阳网页设计-做网站就找示剑新零售 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 贵州成人高考网_贵州成考网| 拖鞋定制厂家-品牌拖鞋代加工厂-振扬实业中国高端拖鞋大型制造商 | 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 脑钠肽-白介素4|白介素8试剂盒-研域(上海)化学试剂有限公司 | 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | 科普仪器菏泽市教育教学仪器总厂 | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 成人纸尿裤,成人尿不湿,成人护理垫-山东康舜日用品有限公司 | 橡胶接头_橡胶软接头_可曲挠橡胶接头-巩义市创伟机械制造有限公司 | 集装箱箱号识别_自重载重图像识别_铁路车号自动识别_OCR图像识别 | 儿童语言障碍训练-武汉优佳加感统文化发展有限公司 | 电子元器件呆滞料_元器件临期库存清仓尾料_尾料优选现货采购处理交易商城 | PAS糖原染色-CBA流式多因子-明胶酶谱MMP-上海研谨生物科技有限公司 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 青岛空压机,青岛空压机维修/保养,青岛空压机销售/出租公司,青岛空压机厂家电话 | 河北凯普威医疗器材有限公司,高档轮椅系列,推车系列,座厕椅系列,协步椅系列,拐扙系列,卫浴系列 | 天津力值检测-天津管道检测-天津天诚工程检测技术有限公司 | 广州物流公司_广州货运公司_广州回程车运输 - 万信物流 | 苏州同创电子有限公司 - 四探针测试仪源头厂家 | 大_小鼠elisa试剂盒-植物_人Elisa试剂盒-PCR荧光定量试剂盒-上海一研生物科技有限公司 |