bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

MySQL中怎么設(shè)計(jì)時(shí)間序列存儲(chǔ)引擎

MySQL中怎么設(shè)計(jì)時(shí)間序列存儲(chǔ)引擎,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

成都創(chuàng)新互聯(lián)專(zhuān)注于邵原網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供邵原營(yíng)銷(xiāo)型網(wǎng)站建設(shè),邵原網(wǎng)站制作、邵原網(wǎng)頁(yè)設(shè)計(jì)、邵原網(wǎng)站官網(wǎng)定制、重慶小程序開(kāi)發(fā)服務(wù),打造邵原網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供邵原網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

首先,讓我們看看OpenTSDB是什么樣的情況。下圖便是OpenTSDB的部署與運(yùn)行圖示。OpenTSDB的后端存儲(chǔ)是HBASE,需要在各個(gè)server上部署信息收集的前端,通過(guò)dashboard展示信息。對(duì)于現(xiàn)有的時(shí)間序列數(shù)據(jù)庫(kù),每一個(gè)都有自己的部署與運(yùn)行方案。而這些方案并不具備架構(gòu)上的通用性。

MySQL中怎么設(shè)計(jì)時(shí)間序列存儲(chǔ)引擎

我們所期望的架構(gòu)是除了底層的存儲(chǔ)組件不同,對(duì)于MySQL的用戶(hù)來(lái)說(shuō)沒(méi)有什么不同。已有的大部分運(yùn)維經(jīng)驗(yàn)(HA、復(fù)制、備份等等)和已有的開(kāi)發(fā)經(jīng)驗(yàn)(插入、刪除和更新的操作)都可以繼承自之前的積累,這是任何一個(gè)使用MySQL的公司所希望的情況。就如下圖所展示的架構(gòu),對(duì)于上層用戶(hù)來(lái)說(shuō),感覺(jué)不到太多的變化。用戶(hù)可以通過(guò)標(biāo)準(zhǔn)的SQL編寫(xiě)自己的應(yīng)用客戶(hù)端來(lái)完成數(shù)據(jù)的采集和展示,提高靈活性。

經(jīng)過(guò)以上的考量,產(chǎn)生了我們的試驗(yàn)產(chǎn)品,存儲(chǔ)引擎CFL(ctrip fast  log),該引擎能夠以快速的日志方式進(jìn)行數(shù)據(jù)的記錄。其完成后就如下圖所示,滿(mǎn)足之前所設(shè)想的種種情況。

MySQL中怎么設(shè)計(jì)時(shí)間序列存儲(chǔ)引擎

技術(shù)介紹

從層次結(jié)構(gòu)來(lái)看,MySQL的存儲(chǔ)引擎分為兩個(gè)部分。一是實(shí)現(xiàn)存儲(chǔ)功能相關(guān)的組件,該層提供存儲(chǔ)引擎的具體功能(增刪改查),我們稱(chēng)之為功能層;一是和MySQL插件接口對(duì)接的組件,該層將MySQL的功能調(diào)用轉(zhuǎn)換為存儲(chǔ)引擎的功能調(diào)用,我們稱(chēng)之為接口層。如下圖所示,數(shù)據(jù)庫(kù)的操作(諸如增刪改查等操作)將通過(guò)引擎管理層達(dá)到存儲(chǔ)引擎的接口層,再由接口層到達(dá)功能層。

MySQL中怎么設(shè)計(jì)時(shí)間序列存儲(chǔ)引擎

功能層

功能層是存儲(chǔ)引擎的核心,由于設(shè)計(jì)目標(biāo)的不同,存儲(chǔ)引擎的功能層所提供的功能也是不同的。比如innobase引擎的功能層,提供了事務(wù)ACID/數(shù)據(jù)存儲(chǔ)/元信息管理/MVCC等一系列功能,提供完整的數(shù)據(jù)庫(kù)功能;再如CSV存儲(chǔ)引擎,僅提供字符類(lèi)型的行存儲(chǔ)。這些不同功能的存儲(chǔ)引擎組件,在MySQL的框架下,提供多種多樣的服務(wù)。

介紹攜程時(shí)間序列存儲(chǔ)引擎的功能層將從兩個(gè)主要方面介紹。一是功能層的架構(gòu),也就是運(yùn)行時(shí)涉及到的對(duì)象和這些對(duì)象的作用;一是進(jìn)行持久化的存儲(chǔ),該部分將說(shuō)明在文件層面,數(shù)據(jù)是如何存儲(chǔ)的。

架構(gòu)

CFL的架構(gòu)設(shè)計(jì)目標(biāo)是盡可能的提高數(shù)據(jù)的插入效率,因此并行處理的想法需要貫穿始終。其機(jī)制為,不同會(huì)話并行的將數(shù)據(jù)向表對(duì)象中插入;表對(duì)象通過(guò)緩沖區(qū)保存插入的數(shù)據(jù),當(dāng)緩沖區(qū)寫(xiě)滿(mǎn)之后,緩沖區(qū)加入磁盤(pán)寫(xiě)入隊(duì)列,通過(guò)專(zhuān)門(mén)的寫(xiě)盤(pán)線程并發(fā)的寫(xiě)入磁盤(pán)。

下圖為攜程時(shí)間序列存儲(chǔ)引擎的架構(gòu):

MySQL中怎么設(shè)計(jì)時(shí)間序列存儲(chǔ)引擎

存儲(chǔ)

在設(shè)計(jì)存儲(chǔ)的時(shí)候,根據(jù)時(shí)序數(shù)據(jù)庫(kù)的特點(diǎn),首先考慮的是插入的效率,然后是快速的故障恢復(fù)。針對(duì)插入效率,在設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)時(shí),采用嚴(yán)格的順序?qū)懭氩呗裕源藖?lái)保證連續(xù)插入的效率。這樣不論在傳統(tǒng)硬盤(pán)還是在SSD硬盤(pán)上,都可以高效的寫(xiě)入。針對(duì)快速故障恢復(fù),通過(guò)控制寫(xiě)入順序(依次寫(xiě)入數(shù)據(jù)、索引和控制信息),實(shí)現(xiàn)快速的恢復(fù)。***考慮實(shí)現(xiàn)上的簡(jiǎn)易性,采用索引和數(shù)據(jù)分別存儲(chǔ)的方式,降低在同一文件中進(jìn)行存儲(chǔ)管理的控制。

MySQL中怎么設(shè)計(jì)時(shí)間序列存儲(chǔ)引擎

接口層

程序片段

如下代碼片段為接口層部分。

MySQL提供的基類(lèi)handler,存儲(chǔ)引擎需要提供繼承自該類(lèi),并實(shí)現(xiàn)基類(lèi)中如ha_open/ha_close等功能函數(shù)的類(lèi)。

MySQL中怎么設(shè)計(jì)時(shí)間序列存儲(chǔ)引擎

繼承handler類(lèi)的攜程時(shí)間序列數(shù)據(jù)庫(kù)的類(lèi)。

MySQL中怎么設(shè)計(jì)時(shí)間序列存儲(chǔ)引擎

接口層架構(gòu)

該部分將以ha_cfl為例,說(shuō)明MySQL存儲(chǔ)引擎管理層和引擎接口之間的關(guān)系。

MySQL中怎么設(shè)計(jì)時(shí)間序列存儲(chǔ)引擎

操作發(fā)送給會(huì)話后,會(huì)話從引擎管理層獲取到ha_cfl的對(duì)象,將操作轉(zhuǎn)化為對(duì)ha_cfl接口的調(diào)用,該步驟完成了SQL到存儲(chǔ)引擎接口的對(duì)接。

ha_cfl接口接到調(diào)用后,將調(diào)用轉(zhuǎn)化為對(duì)表對(duì)象的操作,完成handler接口功能到表對(duì)象的實(shí)現(xiàn)的對(duì)接。

效果

通過(guò)對(duì)時(shí)間序列數(shù)據(jù)進(jìn)行針對(duì)性的開(kāi)發(fā),CFL存儲(chǔ)引擎的插入性能相對(duì)于InnoDB和MyISAM引擎有很大的提高。

引擎\insert線程

1線程(ips)

3線程(ips)

6線程(ips)

CFL

3700

5700

8400

MyISAM

3300

4500

6000

InnoDB

1900

2100

3000

2核ssd虛擬機(jī)

MySQL中怎么設(shè)計(jì)時(shí)間序列存儲(chǔ)引擎

ips:insert per second

總結(jié)

由于本次開(kāi)發(fā)為探索性質(zhì)的開(kāi)發(fā),時(shí)間上或者人力上的限制使產(chǎn)品還不夠完善,不論是設(shè)計(jì)還是實(shí)現(xiàn)上都存在需要改進(jìn)的地方。如,創(chuàng)建表時(shí)對(duì)時(shí)間戳類(lèi)型使用和索引列的指定存在限制,導(dǎo)致無(wú)法創(chuàng)建多列索引,僅能夠創(chuàng)建時(shí)間索引。存儲(chǔ)結(jié)構(gòu)的限制導(dǎo)致刪除和更新無(wú)法快速靈活的進(jìn)行。

但在資源有限的情況下,完成一個(gè)概念完整和實(shí)現(xiàn)完整的產(chǎn)品。而且正是通過(guò)這次探索性開(kāi)發(fā),打開(kāi)了MySQL存儲(chǔ)引擎的一扇大門(mén),不論從整體架構(gòu)到實(shí)現(xiàn)細(xì)節(jié)都有深入研究,積累了很多經(jīng)驗(yàn)。攜程技術(shù)保障中心DBA團(tuán)隊(duì)希望這些經(jīng)驗(yàn)在將來(lái)能夠?yàn)閲?guó)內(nèi)的MySQL社區(qū)提供幫助。

關(guān)于MySQL中怎么設(shè)計(jì)時(shí)間序列存儲(chǔ)引擎問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

當(dāng)前標(biāo)題:MySQL中怎么設(shè)計(jì)時(shí)間序列存儲(chǔ)引擎
標(biāo)題鏈接:http://vcdvsql.cn/article32/gdispc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航小程序開(kāi)發(fā)關(guān)鍵詞優(yōu)化品牌網(wǎng)站制作網(wǎng)站導(dǎo)航網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)