亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: wlmqgzm
打印 上一主題 下一主題

[C++] 讀性能超過Memcached 65%, 單核也超過redis, 支持日志支持掉電保護(hù),歡迎試用 [復(fù)制鏈接]

論壇徽章:
12
2015年辭舊歲徽章
日期:2015-03-03 16:54:1515-16賽季CBA聯(lián)賽之同曦
日期:2017-03-17 19:13:162016科比退役紀(jì)念章
日期:2016-11-07 08:28:12luobin
日期:2016-06-17 17:46:36wusuopu
日期:2016-06-17 17:43:4515-16賽季CBA聯(lián)賽之福建
日期:2016-01-14 12:49:22程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-13 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-08 22:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-08 22:20:002015年亞洲杯之科威特
日期:2015-03-24 14:21:272015年迎新春徽章
日期:2015-03-04 09:57:092016科比退役紀(jì)念章
日期:2018-04-10 16:20:18
31 [報(bào)告]
發(fā)表于 2016-05-11 08:38 |只看該作者
好,這個(gè)貼加精,好,也是對樓主一個(gè)激勵(lì),加把勁啊,

論壇徽章:
12
2015年辭舊歲徽章
日期:2015-03-03 16:54:1515-16賽季CBA聯(lián)賽之同曦
日期:2017-03-17 19:13:162016科比退役紀(jì)念章
日期:2016-11-07 08:28:12luobin
日期:2016-06-17 17:46:36wusuopu
日期:2016-06-17 17:43:4515-16賽季CBA聯(lián)賽之福建
日期:2016-01-14 12:49:22程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-13 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-08 22:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-08 22:20:002015年亞洲杯之科威特
日期:2015-03-24 14:21:272015年迎新春徽章
日期:2015-03-04 09:57:092016科比退役紀(jì)念章
日期:2018-04-10 16:20:18
32 [報(bào)告]
發(fā)表于 2016-05-11 08:38 |只看該作者
之前在學(xué) redis 的時(shí)候,也曾有過用 C++ 自己寫個(gè),不過水平有限,沒敢動(dòng)手。

論壇徽章:
9
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-18 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-01 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-02 06:20:00每日論壇發(fā)貼之星
日期:2015-11-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-03 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-06 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2015-12-02 15:02:47數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-12-08 06:20:00
33 [報(bào)告]
發(fā)表于 2016-05-11 08:49 |只看該作者
本帖最后由 wlmqgzm 于 2016-05-11 09:21 編輯

高性能文件讀寫模塊,  File_Mapping基本功能已經(jīng)完成, 初步簡單的測試了一下性能:

zero填充新的空文件,16GB文件初始化性能大約30微秒,  
寫刷新磁盤性能大約每秒350MByte,  
讀磁盤性能大約每秒700MByte,   
讀數(shù)據(jù)已經(jīng)緩沖到內(nèi)存的性能每秒1.6GByte,  
寫數(shù)據(jù)不刷新并且有足夠空閑內(nèi)存的性能每秒1.1GByte

磁盤是RAID0+1軟陣列,  由四塊普通SATA 1TB硬盤組成.
新技術(shù)的磁盤IO性能確實(shí)還好. 尤其是讀緩存基本上是讀內(nèi)存, 沒有用戶空間到系統(tǒng)空間切換帶來的延遲.   

論壇徽章:
12
2015年辭舊歲徽章
日期:2015-03-03 16:54:1515-16賽季CBA聯(lián)賽之同曦
日期:2017-03-17 19:13:162016科比退役紀(jì)念章
日期:2016-11-07 08:28:12luobin
日期:2016-06-17 17:46:36wusuopu
日期:2016-06-17 17:43:4515-16賽季CBA聯(lián)賽之福建
日期:2016-01-14 12:49:22程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-13 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-08 22:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-08 22:20:002015年亞洲杯之科威特
日期:2015-03-24 14:21:272015年迎新春徽章
日期:2015-03-04 09:57:092016科比退役紀(jì)念章
日期:2018-04-10 16:20:18
34 [報(bào)告]
發(fā)表于 2016-05-11 08:55 |只看該作者
回復(fù) 33# wlmqgzm


    代碼git上了?

論壇徽章:
9
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-18 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-01 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-02 06:20:00每日論壇發(fā)貼之星
日期:2015-11-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-03 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-06 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2015-12-02 15:02:47數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-12-08 06:20:00
35 [報(bào)告]
發(fā)表于 2016-05-11 09:16 |只看該作者
本帖最后由 wlmqgzm 于 2016-05-11 17:57 編輯

因?yàn)榘l(fā)現(xiàn)擴(kuò)展文件并填充新空間為零的時(shí)間是微秒級別, 所以, 修改設(shè)計(jì). 數(shù)據(jù)文件大小可隨時(shí)擴(kuò)充, 并增加預(yù)讀函數(shù).

File_mapping 第一個(gè)初始化文件大小默認(rèn)修改為1MByte,  所以, 計(jì)劃初始化為1MB,  然后根據(jù)數(shù)據(jù)的增量隨時(shí)擴(kuò)充, 每次擴(kuò)充一倍, 最大擴(kuò)充到4G, 然后更換文件名.
這樣的模式, 更節(jié)約硬盤空間, 第2個(gè)文件及以后的文件是直接到4G, 這樣對于小的Table就不浪費(fèi)空間.

對比固定XG, 對于小Table, 節(jié)約空間是明顯的.

確定File_mapping 采用如下文件編碼方式:
文件路徑:/db_name/table_name/

前綴: 從00000001開始,依次增加的文件名.

后綴:
.dbw   表示正在讀寫模式(write)的文件, 一般是最后一個(gè)文件序列號.
.dbf    表示已經(jīng)寫完畢(finish)的文件, 這部分文件都是采用標(biāo)準(zhǔn)格式, 一般是寫完畢, 但是還沒有LZ4壓縮合并的文件.
.dbz    表示已經(jīng)LZ4或者其他格式壓縮過的文件.
.~dbz   表示正在執(zhí)行壓縮過程的文件.
.dbi 表示索引文件(非主索引), 索引文件目前還沒有做代碼, 索引文件的內(nèi)部格式比較難確定, 又想簡單化, 又要append only, 初步想還是采用類似LevelDB的辦法  索引文件名=索引名稱+序列號+ dbi, 還是要不斷合并.

論壇徽章:
9
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-18 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-01 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-02 06:20:00每日論壇發(fā)貼之星
日期:2015-11-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-03 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-06 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2015-12-02 15:02:47數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-12-08 06:20:00
36 [報(bào)告]
發(fā)表于 2016-05-11 09:18 |只看該作者
本帖最后由 wlmqgzm 于 2016-05-11 09:18 編輯

回復(fù) 34# VIP_fuck

這個(gè)不是開源的項(xiàng)目, 也不是公司的開發(fā)項(xiàng)目, 是個(gè)人的自學(xué)作業(yè), 做著玩的練手項(xiàng)目, 暫時(shí)不開源.


   

論壇徽章:
9
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-18 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-01 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-02 06:20:00每日論壇發(fā)貼之星
日期:2015-11-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-03 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-06 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2015-12-02 15:02:47數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-12-08 06:20:00
37 [報(bào)告]
發(fā)表于 2016-05-11 09:35 |只看該作者
回復(fù) 4# 王楠w_n

感謝版主加精華, 這個(gè)開發(fā)項(xiàng)目會(huì)持續(xù)更新的, 直到做完為止.

論壇徽章:
146
2015年亞洲杯之日本
日期:2015-04-28 13:32:012015年亞洲杯之朝鮮
日期:2015-05-06 10:16:442015年亞洲杯之日本
日期:2015-05-06 10:21:342015年亞洲杯紀(jì)念徽章
日期:2015-05-13 17:16:442015亞冠之北京國安
日期:2015-05-13 17:18:292015亞冠之鹿島鹿角
日期:2015-05-13 17:19:062015亞冠之德黑蘭石油
日期:2015-05-27 16:47:402015亞冠之塔什干棉農(nóng)
日期:2015-05-28 15:24:122015亞冠之卡爾希納薩夫
日期:2015-06-01 13:52:392015亞冠之柏斯波利斯
日期:2015-06-04 17:37:292015亞冠之阿爾納斯?fàn)?日期:2015-06-16 11:31:202015亞冠之塔什干火車頭
日期:2015-06-23 10:12:33
38 [報(bào)告]
發(fā)表于 2016-05-11 09:37 |只看該作者
加油 回復(fù) 37# wlmqgzm


   

論壇徽章:
9
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-18 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-01 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-02 06:20:00每日論壇發(fā)貼之星
日期:2015-11-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-03 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-06 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2015-12-02 15:02:47數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-12-08 06:20:00
39 [報(bào)告]
發(fā)表于 2016-05-11 12:18 |只看該作者
本帖最后由 wlmqgzm 于 2016-05-11 16:37 編輯

存儲(chǔ)層的整體數(shù)據(jù)規(guī)劃思路已經(jīng)全部完成:

整體流程在腦海中完整的過了一遍.

塊數(shù)據(jù)的整體設(shè)計(jì)思路已經(jīng)完成, 正在書寫當(dāng)中, 基本上確定, 存儲(chǔ)層的數(shù)據(jù)格式完整支持MVCC和數(shù)據(jù)庫SQL標(biāo)準(zhǔn)的全部四個(gè)隔離級別: 即read uncommited, read commit, repeatable read,serializable.
比最早的想法又進(jìn)了一步, 最早沒有打算實(shí)現(xiàn)這些, 隨著數(shù)據(jù)規(guī)劃, 發(fā)現(xiàn) 在數(shù)據(jù)層的定義中 只需要修改少量關(guān)鍵字節(jié), 就可以實(shí)現(xiàn)與innodb格式完全一致的功能.

因此, 初步計(jì)劃出2個(gè)版本;
2個(gè)版本在硬盤存儲(chǔ)格式上完全一致, 只是軟件功能上做了擴(kuò)展.
第一個(gè)版本1.00  按照KV數(shù)據(jù)庫的標(biāo)準(zhǔn)做, 實(shí)質(zhì)是實(shí)現(xiàn)read uncommited的SQL隔離級別版本. 先做這個(gè)版本.
第二個(gè)版本2.00 按照SQL數(shù)據(jù)庫的標(biāo)準(zhǔn)做, 再陸續(xù)增加read commit, repeatable read,serializable這三個(gè)SQL隔離級別版本,
其中repeatable read 在目前的數(shù)據(jù)規(guī)劃中, 與innodb類似, 實(shí)現(xiàn)了幻讀保護(hù), 即 repeatable read=serializable,
準(zhǔn)確的說, 將實(shí)現(xiàn)兩個(gè)SQL隔離級別. 在性能上, repeatable read將與read commit很接近,  主要的差別在于緩存中有效數(shù)據(jù)的多少,
我的規(guī)劃實(shí)現(xiàn)中 repeatable read 將利用空間保護(hù)(offset隔離), 實(shí)現(xiàn)幻讀保護(hù), 沒有像innodb一樣使用間隙鎖, 因此性能將更好一些.


今天心情比較高興,自己也很意外,基本上按照KV數(shù)據(jù)庫的標(biāo)準(zhǔn),實(shí)現(xiàn)了SQL數(shù)據(jù)庫的全部功能點(diǎn)的設(shè)計(jì),而且全部是高性能設(shè)計(jì),做完的話,會(huì)有比較好的性能
主要的技術(shù)難題的突破在MVCC的設(shè)計(jì),找到了一條覆蓋各類情況的模型.

設(shè)計(jì)壓縮塊/標(biāo)準(zhǔn)塊的結(jié)構(gòu):
// 1) 塊的位置號, 就是塊的唯一標(biāo)志,  位置號就是offset,  4字節(jié)整數(shù),  位置號==實(shí)際存儲(chǔ)的offset, 即該位置上讀到的4字節(jié)數(shù)據(jù)==該位置的offset
// 2) 塊的壓縮格式及壓縮率: 1字節(jié),  0=不壓縮, 1-9=lz4壓縮, 21-29=gzip壓縮,  31-39=bzip2, 先只做lz4, 其他備用

// 3) 塊內(nèi)部記錄數(shù):1字節(jié). 每個(gè)數(shù)據(jù)塊可存放1-240條記錄,  標(biāo)準(zhǔn)塊是一條記錄一個(gè)塊, 壓縮塊是1-240個(gè)記錄一個(gè)塊

這里保留了241-255的編號, 這些編號主要是為了未來(第2個(gè)版本)預(yù)留,
這些編號對應(yīng)的內(nèi)存結(jié)構(gòu), 在硬盤空間中沒有使用,
在內(nèi)存空間中使用, 將以特殊的方式, 提供高性能虛擬鎖
每個(gè)編號將在主鍵上以特殊方式(類似于MVCC)提供4M個(gè)鎖空間, 一共可以提供60M個(gè)鎖空間,即每個(gè)table可提供最大6000萬個(gè)鎖空間
將用于 存儲(chǔ)層的行鎖--更新鎖內(nèi)部使用, 這部分代碼還沒有做, 但是計(jì)劃在第2個(gè)版本中使用, 使用行鎖以后, 將提供完整MVCC和READ COMMIT等數(shù)據(jù)庫標(biāo)準(zhǔn)功能
第2個(gè)版本將實(shí)現(xiàn)完整的MVCC, 讀取是沒有任何鎖, 可提供高的性能. MVCC在第一個(gè)版本中做好預(yù)留, 但是不占數(shù)據(jù)內(nèi)存空間, 以便提供最好的性能
行鎖是寫鎖,即更新鎖, 正在考慮  不過都是第2個(gè)版本的事情, 這個(gè)版本只是做好預(yù)留, 按最簡單的方式實(shí)現(xiàn)

這個(gè)字節(jié)的關(guān)鍵設(shè)計(jì)在于它定位于內(nèi)存中8字節(jié)長整數(shù)offset的最高位,對于1-240的值將直接掩碼轉(zhuǎn)換為8bit全零的offset+1-240兩個(gè)參數(shù),對于241-255這個(gè)部分+3字節(jié)將轉(zhuǎn)化為一個(gè)最大60M的整數(shù),這個(gè)整數(shù)用atomic表示,依次循環(huán)使用這個(gè)參數(shù),最大可表示60M個(gè)正在更新中的數(shù)據(jù),實(shí)現(xiàn)最大6000萬個(gè)虛擬鎖,對于超過用戶自身offset中的數(shù)據(jù), 用戶級別的MVCC是不可見的, 因此,任何在此位置上的更新,將不會(huì)被任何用戶讀取.
說了半天,其實(shí)就是一句話, 在沒有增加新字節(jié)的情況下,實(shí)現(xiàn)了與MVCC以及事務(wù)處理的全兼容功能.所以,就是高效的實(shí)現(xiàn).
一種激進(jìn)的思路:所有的更新是MVCC的,這樣每個(gè)線程都可以提交請求更新數(shù)據(jù),但是最終的Commit是單寫線程的,這樣可以實(shí)現(xiàn)最大化的并發(fā),考慮中.......

// 3) 塊的大小, 1-5字節(jié)整數(shù), 壓縮編碼整數(shù), 表示未壓縮的長度
// 4) 塊的大小, 1-5字節(jié)整數(shù), 壓縮編碼整數(shù)  表示壓縮后實(shí)際的長度,如果不壓縮,同上一個(gè)值
// 5) 塊的內(nèi)容 0K--3.999G
// 6) 塊的校驗(yàn)碼:   8字節(jié),  塊內(nèi)容crc64校驗(yàn)
// 7) 塊的同步碼  8字節(jié)
// 塊的管理用掉 4+1+1+3+3+8+8=28字節(jié) ,   對于4K字節(jié)的壓縮塊,  大約不到1%的開銷,



論壇徽章:
9
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-18 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-01 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-02 06:20:00每日論壇發(fā)貼之星
日期:2015-11-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-03 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-06 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2015-12-02 15:02:47數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-12-08 06:20:00
40 [報(bào)告]
發(fā)表于 2016-05-12 14:56 |只看該作者
本帖最后由 wlmqgzm 于 2016-05-12 16:25 編輯

今天在考慮這樣一個(gè)問題, 主要是多層對象的負(fù)責(zé)任務(wù), 應(yīng)該如何分配??

傳統(tǒng)的模式: 底層對象比較傻瓜, 基本屬于木頭人, 上層讓干啥就干啥, 基本復(fù)雜一點(diǎn)的事情什么都不干, 高層代碼負(fù)責(zé)全部復(fù)雜流程, 高層代碼, 才算是有智慧的, 對下層代碼派工.

這次代碼, 準(zhǔn)備換一種編程模式, 做成 每個(gè)對象自身都是: 智慧的對象, 每個(gè)對象對自己的操作負(fù)責(zé)到底, 底層可以通知高層干活, 高層也可向底層派工,
底層才能更了解需要干什么, 傳統(tǒng)模式的情況下, 高層代碼操心的事情太多, 需要判斷太多本不是自己該負(fù)責(zé)的內(nèi)容, 代碼效率低, 會(huì)增加執(zhí)行一些本不需要反復(fù)執(zhí)行(例如:檢查狀態(tài)和空間等)的代碼.

對象之間的交互一種思路是A對象提供某個(gè)觀察者的function接口, B對象傳遞 std::bind(...) 提供執(zhí)行的動(dòng)作, 這樣每個(gè)對象都可以向任意對象申請某個(gè)參數(shù)的觀察者模式, 被觀察者派工, 實(shí)現(xiàn)了靈活性和自由性.
代碼還沒有做, 準(zhǔn)備試試, 覺得這種新模式有可能降低開發(fā)難度, 當(dāng)然采用全新技術(shù), 也會(huì)有很多額外的風(fēng)險(xiǎn), 要試驗(yàn)一下 .....

具體到這次開發(fā)過程, 考慮 File_mapping 作為底層對象, 將向上層Block對象, 提供: 文件空間切換(達(dá)到最大長度,更換文件), (壓縮完畢,切換到壓縮空間),(空間自動(dòng)擴(kuò)展,重新Mapping)....各種通知, 這樣底層自主在恰當(dāng)?shù)臅r(shí)候做各種事情, 然后通知上層,丟棄即將無效的對象(指針對象), 重新獲取......
總之, 在考慮 底層對象智慧化, 這樣新的編程思路, 會(huì)實(shí)驗(yàn)一下, ......

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP