本帖最后由 wlmqgzm 于 2015-10-29 23:32 编辑
其实, 我现在就在想, 数据库中万恶的锁, 其实, 目前的编程新技术已经可以把内存数据库中的锁彻底抛弃了,
但是市场中好像还没有一款这样的产品, 不知道是什么原因. 也许是我孤陋寡闻吧.
我的理解, 无锁的内存数据库在普通4核心上并发可以轻松过百万, 应该瓶颈在网络层, 内存层没有锁, 就基本没有消耗.
考虑自己来做一个这样的产品吧, 网络层的代码调优完毕, 我就开始做无锁的内存数据库.
只要实现了无锁的内存数据库, 那么内存数据库的并发量就会随着CPU内核的增加而线性增加,
现在的技术路线上有好多种办法, 真的有好多种, 我自己都知道不少, 都可以实现无锁.
初步计划, 我先测试2个最简单的技术路线,
1是内存分区, 然后按核分配内存, 每个核管理自己的区域, 无冲突, 但是有可能单核心的压力过大, 不平衡. 然后就是每个核心有一个队列, 这个队列是lock_free的,
这个技术路线, 是最简单的技术路线, 用软件让数据对核心固定下来, cache也比较固定, 说白了, 这个技术路线是内核操作无阻塞,单线程, 外围解决冲突的问题.
外围使用lock-free解决问题.
2是读写冲突校验法, 利用Intel的SSE指令实现, 理论上可以达到内存带宽, 无瓶颈. 可以保证, 在任何情况下, 无论多少个并发读写同一片内存区域, 至少有一个线程可以成功, 无锁无阻塞无冲突, 全部内存任意存取, 任意访问, 很随意. 这个方案, 还需要做代码, 才能测试, 明天就能给出评测结果.
二种技术路线, 技术上都不复杂, 代码也没有多少, 初步估计, 大约静下心来, 做一个简单的数据库核心,
我准备明天开始先做测试代码, 对技术路线进行性能分析评估, 然后根据测试报告做最后的产品,
想一想无锁的数据库, 是多么的美好啊. 想一想都觉得自己以前怎么就没有用过这样的无锁的数据库 产品呢?????
无锁的世界是多么的美好.
呵呵呵呵呵呵.  |