haisql_memcache版本更新情况(带动态链接库)
更新日期 | 版本号
2017年3月3日 | 1.0.27
更新内容:
因为使用了更高效率的内存管理模块jemalloc,为了解决jemalloc与libc中的malloc/free/realloc等函数冲突的问
题,采用了部分静态链接,部分动态链接的方法,考虑到不是每个人都安装有jemalloc,为了方便用户,将jemalloc
静态链接jemalloc.a,将libc动态链接libc.so, 这样就避免了冲突也默认启用了jemalloc,使性能提高了百分之十.
将如下几个动态链接库保留了下来,缺一不可:
linux-vdso.so.1 => (0x00007ffd34be8000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fad6728a000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fad66f81000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fad66d6a000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fad669a1000)
/lib64/ld-linux-x86-64.so.2 (0x00005637a28cf000)
更新日期 | 版本号
2017年3月7日 | 1.0.28
更新内容:
增加了两个数据日志工作模式
如下:

在原有的七个数据日志工作模式的基础上,新增了两个模式,模式2和模式4;
模式2:保存数据日志每秒刷进系统。
模式4:保存日志空闲刷进系统。
更新日期 | 版本号
2017年3月8日 | 1.0.30
更新内容:
对以前的版本进行了优化:
1.在1.0.26和1.0.28版本的基础上进行了一些优化,取消了对数据库内存大小的限制,减少了程序的开销,
提高了性能。
2.优化了set,get和gets指令,加快了数据包转发的速度,get和gets的查询性能已经超过了memcached,
比memcached快了20%,set的性能比memcached快10%。
更新日期 | 版本号
2017年3月10日 | 1.0.31
更新内容:
在之前版本的基础上进行了优化,修复了一些Bug和版本运行不稳定等因素,haisql_memcache数据库的
性能比之前的版本又有所提高,同时增加了版本的稳定性。
更新日期 | 版本号
2017年3月13日 | 1.0.32
更新内容:
在之前版本的基础上进行了优化,修复了一些Bug和版本运行不稳定等因素,haisql_memcache数据库的
性能比之前的版本又有所提高,同时增加了版本的稳定性。
更新日期 | 版本号
2017年3月17日 | 1.0.33
更新内容:
在之前版本的基础上进行了优化,修复了一些Bug和版本运行不稳定等因素,haisql_memcache数据库的
性能比之前的版本又有所提高,同时增加了版本的稳定性。
更新日期 | 版本号
2017年3月20日 | 1.0.34
更新内容:
在之前版本的基础上进行了优化,修复了一些Bug和版本运行不稳定等因素,haisql_memcache数据库的
性能比之前的版本又有所提高,同时增加了版本的稳定性。
更新日期 | 版本号
2017年3月28日 | 1.0.35
更新内容:
在之前版本的基础上进行了优化,修复了网络层的Bug和版本运行不稳定等因素,使版本的稳定性更高,性
能更快,目前我们的软件读性能比memcached快64%,写性能比memcached快30%。
主要优化内容:
1:优化了内存分配机制,对于最常见的变量std::string,std::shared_ptr<std:;string>等等都定义了自己的
更高效率的内置资源池,实现更好的内存分配器和内存回收机制;
2:将各变量组合排列,将同时变化的放到一起,提高CPU cacheline的效率;
3:将网络层boost asio中的函数尽量使用更接近底层的调用函数receive/send等,减少调用的层次等等办法.
更新日期 | 版本号
2017年4月13日 | 1.0.36
更新内容:
在之前版本的基础上进行了优化,主要改进了各类锁的使用,提供更大的并发。
主要优化内容:
1:使用了读写锁(读共享锁,写独占锁),替换掉了原来统一的spin_lock, 提高了读并发性,实现了多线
程同时读有更大的并发性;
2:改善了getg/getl/append/prepend/append/incr/decr的性能,比上个版本有不少提高;
3:改进了所有修改命令的锁机制,将锁划分为两层读写锁,第一层是全局锁,exec时是使用独占锁,保
证事物处理的唯一性,普通set/add/replace等修改命令是共享锁,用于保证事务处理的完整性,第二层是数据层
锁,32张表,每表划分256组,一共8192把读写锁,get/gets等命令读数据时使用共享锁,set/add/replace等命
令写数据时使用独占锁。可以保证查询数据无限并发,写数据时锁冲突的概率也非常低,因为一共有8K把锁,
而我们使用的线程数量是CPU数量X2, 对于8核CPU来说,同时运行的线程只有16个线程,16个线程竞争8192把
锁,理论上几乎不会有写冲突。