- 論壇徽章:
- 9
|
我現(xiàn)在就在想, 數(shù)據(jù)庫中萬惡的鎖,
其實, 目前的多線程編程新技術(shù)已經(jīng)可以把內(nèi)存數(shù)據(jù)庫中的鎖徹底拋棄了,
但是市場中好像還沒有一款這樣的產(chǎn)品, 不知道是什么原因. 也許是我孤陋寡聞, 使用少吧. 如果有的話, 請告訴我.
我的理解, 無鎖的內(nèi)存數(shù)據(jù)庫在普通4核心上并發(fā)可以輕松過百萬千萬, 應該瓶頸在網(wǎng)絡層, 內(nèi)存層沒有鎖, 就基本沒有消耗, 很少的代碼就可以存取到數(shù)據(jù),
如果市場上真的沒有這樣的產(chǎn)品, 就考慮自己來做一個這樣的產(chǎn)品吧, 網(wǎng)絡層的代碼調(diào)優(yōu)完畢, 我就開始做無鎖的內(nèi)存數(shù)據(jù)庫.
只要實現(xiàn)了無鎖的內(nèi)存數(shù)據(jù)庫, 那么內(nèi)存數(shù)據(jù)庫的并發(fā)量就會隨著CPU內(nèi)核的增加而線性增加,
現(xiàn)在的技術(shù)路線上有好多種辦法, 我自己知道至少2種, 都可以實現(xiàn)無鎖.
初步計劃, 我先做初步代碼測試2個最簡單的技術(shù)路線,
1是內(nèi)存分區(qū), 然后按核分配內(nèi)存, 每個核管理自己的區(qū)域, 無沖突, 但是有可能單核心的壓力過大, 不平衡. 然后就是每個核心有一個隊列, 這個隊列是lock_free的, 這個技術(shù)路線, 是最簡單的技術(shù)路線, 用軟件讓數(shù)據(jù)對核心固定下來, cache也比較固定, 說白了, 這個技術(shù)路線是內(nèi)核操作無阻塞,單線程, 外圍解決沖突的問題.
外圍使用lock-free解決問題. 技術(shù)瓶頸在lock-free
2是讀寫沖突校驗法, 利用Intel的SSE指令實現(xiàn), 理論上可以達到內(nèi)存帶寬, 無瓶頸. 可以保證, 在任何情況下, 無論多少個并發(fā)讀寫同一片內(nèi)存區(qū)域, 至少有一個線程可以成功, 無鎖無阻塞無沖突, 全部內(nèi)存任意存取, 任意訪問, 很隨意. 技術(shù)瓶頸在SSE.
二種技術(shù)路線, 技術(shù)上都不復雜, 代碼也沒有多少, 初步估計, 大約靜下心來, 做一個簡單的數(shù)據(jù)庫核心,
我準備明天開始先做測試代碼, 對技術(shù)路線進行性能分析評估, 然后根據(jù)測試報告評估來做最后的產(chǎn)品,
想一想無鎖的數(shù)據(jù)庫, 是多么的美好啊. 想一想都覺得自己以前怎么就沒有用過這樣的無鎖的數(shù)據(jù)庫 產(chǎn)品呢?????
無鎖的世界是多么的美好.
呵呵呵呵呵呵.
大家如果有無鎖內(nèi)存數(shù)據(jù)庫的新技術(shù)路線, 也可以在這個帖子中一起討論一下, 謝謝.
畢竟我從來沒有接觸過這樣的產(chǎn)品, 我是第一次做. |
|