首先確認(rèn)InnoDB所在主機(jī)的IO能力,此時(shí)需要用到數(shù)據(jù)庫(kù)的innodb_io_capacity參數(shù),該參數(shù)推薦設(shè)置為磁盤的IOPS。磁盤的IOPS可以通過fio工具進(jìn)行測(cè)試。
和田網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,和田網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為和田成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的和田做網(wǎng)站的公司定做!
Redo Log邏輯&物理結(jié)構(gòu) 從邏輯上來講,redo log記錄是連續(xù)遞增的,但是對(duì)應(yīng)到物理文件就不一樣了,考慮到磁盤空間,redo log被設(shè)計(jì)成了多個(gè)可循環(huán)寫入的文件。
降低臟頁(yè)產(chǎn)生速度,也就是調(diào)低 DELETE 速度,因?yàn)閿?shù)據(jù)產(chǎn)生的速度很快,為了避免刪除跟不上插入的速度,也被 PASS。 調(diào)大 Buffer Pool,可以容納更多的臟頁(yè)。
1、使用Sybase的Backup Server(備份服務(wù)器),做Dump備份 轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)(Dump database),就是為整個(gè)數(shù)據(jù)庫(kù)(包括數(shù)據(jù)、表結(jié)構(gòu)、觸發(fā)器、游標(biāo)、存儲(chǔ)過程、事務(wù)日志等)做一次物理備份。
2、轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)時(shí),系統(tǒng)自動(dòng)執(zhí)行一次checkpoint,即將日志和數(shù)據(jù)從緩沖區(qū)拷貝到硬盤(只拷貝臟頁(yè)),把已被分配的頁(yè)(日志和數(shù)據(jù))轉(zhuǎn)儲(chǔ)到設(shè)備。
3、checkpoint表用來保障一個(gè)事務(wù)執(zhí)行完成后,在MySQL數(shù)據(jù)庫(kù)從有一張表記錄當(dāng)前的日志回放點(diǎn),與MySQL復(fù)制記錄binlog的GTID或position點(diǎn)類似。
1、可以類比為 java中的 ThreadLocal 線程本地變量 就是為每個(gè)線程維護(hù)一個(gè)buffer pool實(shí)例,這樣就不用去爭(zhēng)用同一個(gè)實(shí)例了。相當(dāng)于減少高并發(fā)下mysql對(duì)INNODB_BUFFER緩沖池的爭(zhēng)用。
2、innodb_buffer_pool_instances 參數(shù),將 buffer pool 分成幾個(gè)區(qū),每個(gè)區(qū)用獨(dú)立的鎖保護(hù),這樣就減少了訪問 buffer pool 時(shí)需要上鎖的粒度,以提高性能。
3、緩沖池用于從磁盤讀取表和索引數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)管理器分配的用于高速緩存這些表或索引數(shù)據(jù)的內(nèi)存區(qū)域。每個(gè)數(shù)據(jù)庫(kù)至少有一個(gè)緩沖池。
4、mysql是通過線程緩存來完成線程重用的??蛻舳税l(fā)起連接時(shí),首先會(huì)去線程緩沖池里找是不是有空閑的線程。如果沒有才會(huì)去新建線程。當(dāng)一個(gè)連接斷開的時(shí)候,并不會(huì)馬上銷毀線程釋放資源。而是暫時(shí)把線程放在緩沖池中掛起。
5、緩沖池(Buffer Pool)Buffer Pool中包含了磁盤中部分?jǐn)?shù)據(jù)頁(yè)的映射。當(dāng)從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)時(shí),會(huì)先從Buffer Pool中讀取數(shù)據(jù),如果Buffer Pool中沒有,則從磁盤讀取后放入到Buffer Pool中。
6、具體做法是:如果該索引頁(yè)在緩沖池中,直接插入;否則,先將其放入插入緩沖區(qū)中,再以一定的頻率和索引頁(yè)合并,這時(shí),就可以將同一個(gè)索引頁(yè)中的多個(gè)插入合并到一個(gè)IO操作中,大大提高寫性能。