Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
日客戶要求表內(nèi)的數(shù)據(jù)依據(jù)某種分組生成HTML頁面進(jìn)行展示,一般處理這種需求直接上編程工具就好了,從數(shù)據(jù)庫里讀取數(shù)據(jù),根據(jù)規(guī)則生成字符串,最后將字符串寫出到文件。由于需求比較急,作為數(shù)據(jù)庫編程系列文章,如果能用SQL實(shí)現(xiàn)首選還是SQL,這樣處理既直接又快速,不過針對(duì)SQL要真的有耐心和信心寫完,調(diào)試更是崩潰。由于要寫出文件到硬盤,最后還是選擇MySQL作為數(shù)據(jù)庫工具,Navicat作為開發(fā)工具。
有兩張表計(jì)劃表、市縣表,二者依靠市縣編碼(sxbm)進(jìn)行等值連接,計(jì)劃表內(nèi)含有各個(gè)學(xué)校投放在各個(gè)市縣的專業(yè)代號(hào)(zydh),專業(yè)名稱(zymc)、招生備注(bz)、學(xué)制(xz)、要求的學(xué)歷(xl)、計(jì)劃數(shù)(jh)等字段組成的計(jì)劃信息,院校編碼(yxbm)為學(xué)校的兩位數(shù)編碼,院校代號(hào)(yxdh)為院校編碼(yxbm)+市縣編碼(sxbm)組成的四位數(shù)編碼,院校代號(hào)其實(shí)可以區(qū)分出學(xué)校在哪個(gè)市縣的投檔的專業(yè)計(jì)劃。要求以學(xué)校為單位創(chuàng)建HTML頁面,頁面首先要以市縣作為表格分割,然后根據(jù)專業(yè)代號(hào)排序。具體實(shí)現(xiàn)過程如下:
CREATE TABLE `zzjh2019v` ( `YXDH` varchar(9) COMMENT '學(xué)校代號(hào)', `YXMC` varchar(54) COMMENT '學(xué)校名稱', `ZYDH` varchar(2) COMMENT '專業(yè)代號(hào)', `ZYMC` varchar(28) COMMENT '專業(yè)名稱', `XZ` varchar(3) COMMENT '學(xué)制', `XL` varchar(4) COMMENT '學(xué)歷', `JH` varchar(6) COMMENT '招生計(jì)劃數(shù)', `BZ` varchar(200) COMMENT '備注', `yxbm` char(2) COMMENT '學(xué)校編碼', `sxbm` char(2) COMMENT '市縣編碼' ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;
CREATE TABLE `sx` ( `sxbm` char(2) COMMENT '市縣編碼', `sxmc` varchar(20) COMMENT '市縣名稱' ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;
糾結(jié)了很久這個(gè)東西怎么寫,最后采取游標(biāo)、拼接字符串、字符串聚合,動(dòng)態(tài)SQL,寫文件等一些列操作完成需求,創(chuàng)建的存儲(chǔ)過程如下:
CREATE DEFINER=`root`@`localhost` PROCEDURE `splitjh`() BEGIN declare done INT DEFAULT 0; declare pyxbm char(2); declare psxmc varchar(10); declare pyxmc varchar(50); declare pjhall int; declare pjhrows TEXT; declare yxjh cursor for select yxbm,yxmc,sum(jh) jhall from zzjh2019v a,sx b where a.sxbm=b.sxbm group by yxbm,yxmc order by yxbm; declare CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; open yxjh; fetch yxjh into pyxbm,pyxmc,pjhall; while done !=1 do select group_concat(jhrow separator '') into pjhrows from (select concat('<tr class="subtitle"><td>',yxdh,'</td><td>',yxmc,'在 <span><font color="red">',b.sxmc,'</font></span> 招生計(jì)劃如下</td><td>',sum(jh),'</td><td></td><td></td></tr>',group_concat('<tr class="jhrow"><td>',zydh,'</td><td>',zymc,'(',bz,')</td><td>',jh,'</td><td>',xz,'</td><td>',xl,'</td></tr>' order by zydh separator '')) jhrow from zzjh2019v a,sx b where yxbm=pyxbm and a.sxbm=b.sxbm group by yxdh order by yxdh,zydh) jhs; set @pfilename = concat('''d:/32/1/1/jh11',pyxbm,'.html'''); set @sql =concat('select concat(''<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link rel="stylesheet" type="text/css" href="zsjh.css" ><title>3+2計(jì)劃</title></head><body><h3></h3><table><tr class="subtitle"><th>代號(hào)</th><th>專業(yè)及名稱備注</th><th>人數(shù)</th><th>學(xué)制</th><th>學(xué)歷</th></tr>'',''',pjhrows,''',''</body></html>'') from dual into outfile ',@pfilename); prepare execsql from @sql; execute execsql; DEALLOCATE PREPARE execsql; fetch yxjh into pyxbm,pyxmc,pjhall; end while; close yxjh; END;
首先看效果,執(zhí)行過程
call splitjh();
在磁盤形成的HTML文件效果如下圖(數(shù)據(jù)有一定的敏感性,進(jìn)行了遮擋處理):
文件展示頁面
生成的文件列表如下圖:
生成的文件列表
這里一共有87所學(xué)校,所以生成了87的文件,添加CSS樣式文件,讓表格呈現(xiàn)如前圖所示。
技術(shù)點(diǎn)
1)MySQL的游標(biāo),以及循環(huán)讀取游標(biāo)的方法,涉及的語句如下:
declare yxjh cursor for select yxbm,yxmc,sum(jh) jhall from zzjh2019v a,sx b where a.sxbm=b.sxbm group by yxbm,yxmc order by yxbm;#游標(biāo)定義 declare CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;#游標(biāo)循環(huán)條件,注意此句一定要定義在游標(biāo)之后,才起作用 open yxjh;#打開游標(biāo) fetch yxjh into pyxbm,pyxmc,pjhall;#將游標(biāo)行內(nèi)容賦值給變量。
2)執(zhí)行動(dòng)態(tài)SQL,由于MySQL into outfile 后接的文件名不能為變量,所以必須使用動(dòng)態(tài)SQL的方法,涉及的語句如下:
prepare execsql from @sql;#從一個(gè)變量準(zhǔn)備一個(gè)動(dòng)態(tài)sql,注意execsql不用提前定義 execute execsql;#執(zhí)行準(zhǔn)備好的語句 DEALLOCATE PREPARE execsql;#銷毀語句
綜上就是使用MySQL數(shù)據(jù)庫,并借用MySQL寫文件的方式將數(shù)據(jù)從數(shù)據(jù)庫內(nèi)按照需求導(dǎo)出文件,為何不用navicat導(dǎo)出呢?因?yàn)闊o法達(dá)到要求,又是聚合、又是格式,所以只能自己編寫過程通過SQL語句拼接字符串的方式來實(shí)現(xiàn)。沒有太多的技術(shù)難度,主要是想法和調(diào)試難度。后續(xù)在此基礎(chǔ)上又開發(fā)了以市縣為單位創(chuàng)建HTML文件,各招生學(xué)校作為分割的過程。本案例是實(shí)際需求催生出來的做法,在遇到這樣的需求前你是先想到SQL還是先想到開發(fā)工具呢?從實(shí)際效果看使用SQL這種方式更加靈活。這樣的SQL實(shí)現(xiàn)的字符串拼接是不是有點(diǎn)極限呢?
文:https://www.enmotech.com/web/detail/1/838/1.html (復(fù)制鏈接,打開瀏覽器即可查看)
北冥有 Data,其名為鯤,鯤之大,一個(gè) MySQL 放不下。千萬量級(jí)的數(shù)據(jù),用 MySQL 要怎么存?
初學(xué)者在看到這個(gè)問題的時(shí)候,可能首先想到的是 MySQL 一張表到底能存放多少條數(shù)據(jù)?
根據(jù) MySQL 官方文檔的介紹,MySQL 理論上限是 (232)2 條數(shù)據(jù),然而實(shí)際操作中,往往還受限于下面兩條因素:
1. myisamdatapointersize,MySQL 的 myisamdatapointersize 一般默認(rèn)是 6,即 48 位,那么對(duì)應(yīng)的行數(shù)就是 248-1。
2. 表的存儲(chǔ)大小 256TB
那有人會(huì)說,只要我的數(shù)據(jù)大小不超過上限,數(shù)據(jù)行數(shù)也不超過上限,是不是就沒有問題了?其實(shí)不盡然。
在實(shí)際項(xiàng)目中,一般沒有哪個(gè)項(xiàng)目真的觸發(fā)到 MySQL 數(shù)據(jù)的上限了,因?yàn)楫?dāng)數(shù)據(jù)量變大了之后,查詢速度會(huì)慢的嚇人,而一般這個(gè)時(shí)候,你的數(shù)據(jù)量離 MySQL 的理論上限還遠(yuǎn)著呢!
傳統(tǒng)的企業(yè)應(yīng)用一般數(shù)據(jù)量都不大,數(shù)據(jù)也都比較容易處理,但是在互聯(lián)網(wǎng)項(xiàng)目中,上千萬、上億的數(shù)據(jù)量并不鮮見。在這種時(shí)候,還要保證數(shù)據(jù)庫的操作效率,我們就不得不考慮數(shù)據(jù)庫的分庫分表了。
那么接下來就和大家簡單聊一聊數(shù)據(jù)庫分庫分表的問題。
數(shù)據(jù)庫切分
看這個(gè)名字就知道,就是把一個(gè)數(shù)據(jù)庫切分成 N 多個(gè)數(shù)據(jù)庫,然后存放在不同的數(shù)據(jù)庫實(shí)例上面,這樣做有兩個(gè)好處:
1. 降低單臺(tái)數(shù)據(jù)庫實(shí)例的負(fù)載
2. 可以方便的實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的擴(kuò)容
一般來說,數(shù)據(jù)庫的切分有兩種不同的切分規(guī)則:
1. 水平切分
2. 垂直切分
接下來我們就對(duì)這兩種不同的切分規(guī)則分別進(jìn)行介紹。
水平切分
先來一張簡單的示意圖,大家感受一下什么是水平切分:
假設(shè)我的 DB 中有 table-1、table-2 以及 table-3 三張表,水平切分就是拿著我的絕世好劍,對(duì)準(zhǔn)黑色的線條,砍一劍或者砍 N 劍!
砍完之后,將砍掉的部分放到另外一個(gè)數(shù)據(jù)庫實(shí)例中,變成下面這樣:
這樣,原本放在一個(gè) DB 中的 table 現(xiàn)在放在兩個(gè) DB 中了,觀察之后我們發(fā)現(xiàn):
1. 兩個(gè) DB 中表的個(gè)數(shù)都是完整的,就是原來 DB 中有幾張表,現(xiàn)在還是幾張。
2. 每張表中的數(shù)據(jù)是不完整的,數(shù)據(jù)被拆分到了不同的 DB 中去了。
這就是數(shù)據(jù)庫的水平切分,也可以理解為按照數(shù)據(jù)行進(jìn)行切分,即按照表中某個(gè)字段的某種規(guī)則來將表數(shù)據(jù)分散到多個(gè)庫之中,每個(gè)表中包含一部分?jǐn)?shù)據(jù)。
這里的某種規(guī)則都包含哪些規(guī)則呢?這就涉及到數(shù)據(jù)庫的分片規(guī)則問題了,這個(gè)松哥在后面的文章中也會(huì)和大家一一展開詳述。這里先簡單說幾個(gè)常見的分片規(guī)則:
1. 按照日期劃分:不容日期的數(shù)據(jù)存放到不同的數(shù)據(jù)庫中。
2. 對(duì) ID 取模:對(duì)表中的 ID 字段進(jìn)行取模運(yùn)算,根據(jù)取模結(jié)果將數(shù)據(jù)保存到不同的實(shí)例中。
3. 使用一致性哈希算法進(jìn)行切分。
詳細(xì)的用法,將在后面的文章中和大家仔細(xì)說。
垂直切分
先來一張簡單的示意圖,大家感受一下垂直切分:
所謂的垂直切分就是拿著我的屠龍刀,對(duì)準(zhǔn)了黑色的線條砍??惩曛?,將不同的表放到不同的數(shù)據(jù)庫實(shí)例中去,變成下面這個(gè)樣子:
這個(gè)時(shí)候我們發(fā)現(xiàn)如下幾個(gè)特點(diǎn):
1. 每一個(gè)數(shù)據(jù)庫實(shí)例中的表的數(shù)量都是不完整的。
2. 每一個(gè)數(shù)據(jù)庫實(shí)例中表的數(shù)據(jù)是完整的。
這就是垂直切分。一般來說,垂直切分我們可以按照業(yè)務(wù)來劃分,不同業(yè)務(wù)的表放到不同的數(shù)據(jù)庫實(shí)例中。
老實(shí)說,在實(shí)際項(xiàng)目中,數(shù)據(jù)庫垂直切分并不是一件容易的事,因?yàn)楸碇g往往存在著復(fù)雜的跨庫 JOIN 問題,那么這個(gè)時(shí)候如何取舍,就要考驗(yàn)架構(gòu)師的水平了!
優(yōu)缺點(diǎn)分析
通過上面的介紹,相信大家對(duì)于水平切分和垂直切分已經(jīng)有所了解,優(yōu)缺點(diǎn)其實(shí)也很明顯了,松哥再來和大家總結(jié)一下。
水平切分
· 優(yōu)點(diǎn)
水平切分最大的優(yōu)勢在于數(shù)據(jù)庫的擴(kuò)展性好,提前選好切分規(guī)則,數(shù)據(jù)庫后期可以非常方便的進(jìn)行擴(kuò)容。
有效提高了數(shù)據(jù)庫穩(wěn)定性和系統(tǒng)的負(fù)載能力。拆分規(guī)則抽象好, join 操作基本可以數(shù)據(jù)庫做。
· 缺點(diǎn)
水平切分后,分片事務(wù)一致性不容易解決。
拆分規(guī)則不易抽象,對(duì)架構(gòu)師水平要求很高。
跨庫 join 性能較差。
垂直切分
· 優(yōu)點(diǎn)
一般按照業(yè)務(wù)拆分,拆分后業(yè)務(wù)清晰,可以結(jié)合微服務(wù)一起食用。
系統(tǒng)之間整合或擴(kuò)展相對(duì)要容易很多。
數(shù)據(jù)維護(hù)相對(duì)簡單。
· 缺點(diǎn)
最大的問題在于存在單庫性能瓶頸,數(shù)據(jù)表擴(kuò)展不易。
跨庫 join 不易。
事務(wù)處理復(fù)雜。
結(jié)語
雖然 MySQL 中數(shù)據(jù)存儲(chǔ)的理論上限比較高,但是在實(shí)際開發(fā)中我們不會(huì)等到數(shù)據(jù)存不下的時(shí)候才去考慮分庫分表問題,因?yàn)樵谀侵?,你就?huì)明顯的感覺到數(shù)據(jù)庫的各項(xiàng)性能在下降,就要開始考慮分庫分表了。
想了解更多數(shù)據(jù)庫、云技術(shù)的內(nèi)容嗎?
快來關(guān)注“數(shù)據(jù)和云”公眾號(hào)、“云和恩墨”官方網(wǎng)站,我們期待大家一同學(xué)習(xí)和進(jìn)步!
數(shù)據(jù)和云小程序“DBASK”在線問答隨時(shí)解惑,歡迎了解和關(guān)注。
client]
port = 3306
[mysqld]
#默認(rèn)存儲(chǔ)引擎INNODB
default-storage-engine=INNODB
#GROUP_CONCAT長度
group_concat_max_len =99999
#端口號(hào)
port = 3306
#套接字文件
#這里要注意:有時(shí)候重啟mysql會(huì)提示/tmp/mysql.sock不存在,此時(shí)通常會(huì)由于兩種情況導(dǎo)致,解決方法可以參考我之前記錄的文章,親測有效:https://www.cnblogs.com/zhangweizhong/p/12179452.html
socket = /usr/local/mysql/mysql.sock
#pid寫入文件位置
pid-file = /usr/local/mysql/mysqld.pid
#數(shù)據(jù)庫文件位置
datadir = /home/data/mysql/data
#控制文件打開的個(gè)數(shù);
open_files_limit = 10240
#當(dāng)外部鎖定(external-locking)起作用時(shí),每個(gè)進(jìn)程若要訪問數(shù)據(jù)表,
#則必須等待之前的進(jìn)程完成操作并解除鎖定。由于服務(wù)器訪問數(shù)據(jù)表時(shí)經(jīng)常需要等待解鎖,
skip-external-locking
#跳過DNS反向解析
skip-name-resolve
#關(guān)閉TIMESTAMP類型默認(rèn)值
explicit_defaults_for_timestamp
#不受client字符集影響,保證sever端字符集
skip-character-set-client-handshake
#初始連接字符集UTF8
init-connect='SET NAMES utf8'
#默認(rèn)數(shù)據(jù)庫字符集
character-set-server=utf8
#查詢緩存0,1,2,分別代表了off、on、demand
query_cache_type = 1
#單位秒,握手時(shí)間超過connect_timeout,連接請(qǐng)求將會(huì)被拒絕
connect_timeout = 20
#設(shè)置在多少秒沒收到主庫傳來的Binary Logs events之后,從庫認(rèn)為網(wǎng)絡(luò)超時(shí),Slave IO線程會(huì)重新連接主庫。
#該參數(shù)的默認(rèn)值是3600s
slave_net_timeout = 30
#這個(gè)參數(shù)用來配置從服務(wù)器的更新是否寫入二進(jìn)制日志,這個(gè)選項(xiàng)默認(rèn)是不打開的,
log-slave-updates=1
#用于slave服務(wù)器,io線程會(huì)把server id與自己相同的event寫入日志,與log-slave-updates選項(xiàng)沖突
replicate-same-server-id=0
server_id=10112879101
# 打開二進(jìn)制日志功能.
log-bin =/home/data/mysql/binlog/mysql-bin.log
#relay-log日志
relay-log=mysql-relay-bin
master-info-repository=TABLE
relay-log-info-repository=TABLE
#不寫入binlog二進(jìn)制日志中的數(shù)據(jù)庫
binlog-ignore-db=mysql # No sync databases
binlog-ignore-db=test # No sync databases
binlog-ignore-db=information_schema # No sync databases
binlog-ignore-db=performance_schema # No sync databases
#寫入binlog二進(jìn)制日志中數(shù)據(jù)庫
binlog-do-db=business_db
binlog-do-db=user_db
binlog-do-db=plocc_system
#清理binlog
expire-logs-days=15
max_binlog_size = 1073741824 # Bin logs size ( 1G )
#使binlog在每1000次binlog寫入后與硬盤同步
sync_binlog = 1000
#指定只復(fù)制哪個(gè)庫的數(shù)據(jù)
replicate-do-db=business_db
replicate-do-db=user_db
replicate-do-db=plocc_system
#開啟事件調(diào)度器Event Scheduler
event_scheduler=1
#MySQL能暫存的連接數(shù)量。
back_log = 500
#MySQL允許最大的進(jìn)程連接數(shù),
max_connections = 6000
#每個(gè)用戶的最大的進(jìn)程連接數(shù)
max_user_connection = 3000
#每個(gè)客戶端連接請(qǐng)求異常中斷的最大次數(shù)
max_connect_errors = 6000
#表調(diào)整緩沖區(qū)大小。
table_cache = 614
#表描述符緩存大小,可減少文件打開/關(guān)閉次數(shù)
table_open_cache = 2048
#設(shè)置在網(wǎng)絡(luò)傳輸中一次消息傳輸量的最大值。
max_allowed_packet = 64M
# 在一個(gè)事務(wù)中binlog為了記錄SQL狀態(tài)所持有的cache大小
binlog_cache_size = 1M
# 獨(dú)立的內(nèi)存表所允許的最大容量.
max_heap_table_size = 256M
#Sort_Buffer_Size被用來處理類似ORDER BY以及GROUP
sort_buffer_size = 8M
#用于表間關(guān)聯(lián)緩存的大小,和sort_buffer_size一樣,該參數(shù)對(duì)應(yīng)的分配內(nèi)存也是每個(gè)連接獨(dú)享。
join_buffer_size = 8M
#thread_cache_size表示可以重新利用保存在緩存中線程的數(shù)量
thread_cache_size = 128
#此值表示允許應(yīng)用程序在同一時(shí)間運(yùn)行的線程的數(shù)量.
thread_concurrency = 8
#此值用來緩沖 SELECT 的結(jié)果并且在下一次同樣查詢的時(shí)候不再執(zhí)行直接返回結(jié)果
query_cache_size = 64M
#指定單個(gè)查詢能夠使用的緩沖區(qū)大小
query_cache_limit = 2M
#被全文檢索索引的最小的字長
ft_min_word_len = 4
#設(shè)置MYSQL線程使用的堆大小
thread_stack = 192K
#設(shè)定默認(rèn)的事務(wù)隔離級(jí)別.可用的級(jí)別如下:
#READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE
transaction_isolation = READ-COMMITTED
#此值表示內(nèi)存中臨時(shí)表的最大大小
tmp_table_size = 256M
#binlog日志類型
#mixed:混合型
binlog_format=mixed
#開啟慢查詢?nèi)罩?/p>
slow_query_log
#文件格式
log_output = FILE
# 所有的使用了比這個(gè)時(shí)間(以秒為單位)更多的查詢會(huì)被認(rèn)為是慢速查詢
long_query_time = 0.5
#慢查詢?nèi)罩疚恢?/p>
slow_query_log_file=/usr/local/mysql/mysqld_slow.log
########MyISAM 相關(guān)選項(xiàng)
#用于索引的緩沖區(qū)大小
key_buffer_size = 2048M
#MySql讀入緩沖區(qū)大小。
read_buffer_size = 2M
#MySql的隨機(jī)讀(查詢操作)緩沖區(qū)大小。
read_rnd_buffer_size = 16M
#批量插入數(shù)據(jù)緩存大小,
bulk_insert_buffer_size = 16M
#MyISAM表發(fā)生變化,重建索引時(shí)所需的緩沖
myisam_sort_buffer_size = 128M
#MySQL重建索引時(shí)所允許的臨時(shí)文件的大小
myisam_max_sort_file_size = 1G
#如果一個(gè)表擁有多個(gè)索引, MyISAM 會(huì)通過并行排序使用多個(gè)線程去修復(fù)他們。
myisam_repair_threads = 1
# 自動(dòng)檢查和修復(fù)沒有適當(dāng)關(guān)閉的 MyISAM 表.
myisam_recover
########INNODB相關(guān)選項(xiàng)
#如果你的MySQL服務(wù)包含InnoDB支持但是并不打算使用的話,
#skip-innodb
#這對(duì)Innodb表來說非常重要,Innodb把所有的數(shù)據(jù)和索引都緩存起來,此參數(shù)設(shè)置越大,數(shù)據(jù)存取時(shí)所需要的磁盤I/O越少。
innodb_buffer_pool_size = 2048M
# InnoDB 將數(shù)據(jù)保存在一個(gè)或者多個(gè)數(shù)據(jù)文件中成為表空間
innodb_data_file_path = ibdata1:1024M:autoextend
# 文件IO的線程數(shù),一般為 4
innodb_file_io_threads = 4
# 允許線程數(shù)量。
innodb_thread_concurrency = 16
# 如果設(shè)置為1 ,InnoDB會(huì)在每次事務(wù)提交后將事務(wù)日志寫到磁盤上,
# 基于性能考慮,可以設(shè)置為0或2,但要承擔(dān)在發(fā)生故障時(shí)丟失數(shù)據(jù)的風(fēng)險(xiǎn)。
# 0代表日志只大約每秒寫入日志文件并且日志文件刷新到磁盤.
# 2代表每次提交后日志寫入日志文件,但是日志文件每秒刷新到磁盤上。
innodb_flush_log_at_trx_commit = 2
#此參數(shù)用于寫日志文件所用的內(nèi)存大小,以M為單位。
innodb_log_buffer_size = 16M
#此參數(shù)用于確定日志文件的大小
innodb_log_file_size = 1024M
#日志組中的文件總數(shù)
innodb_log_files_in_group = 3
# InnoDB的日志文件所在位置
#innodb_log_group_home_dir
# 在InnoDB緩沖池中最大允許的臟頁面的比例
innodb_max_dirty_pages_pct = 90
# InnoDB用來刷新日志的方法
innodb_flush_method=O_DSYNC
# 在被回滾前,一個(gè)InnoDB的事務(wù)應(yīng)該等待一個(gè)鎖被批準(zhǔn)多久
innodb_lock_wait_timeout = 30
[mysqldump]
# 不要在將內(nèi)存中的整個(gè)結(jié)果寫入磁盤之前緩存. 在導(dǎo)出非常巨大的表時(shí)需要此項(xiàng)
max_allowed_packet = 64M
[mysql]
no-auto-rehash
#指定一個(gè)請(qǐng)求的最大連接時(shí)間,對(duì)于4GB左右的內(nèi)存服務(wù)器來說,可以將其設(shè)置為5-10。
wait_timeout = 10
#將沒有使用索引的查詢也記錄下來
log-queries-not-using-indexes
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。