需求源自项目中的MemCache需求,开始想用MemCached(官方站点:http://memcached.org/ ),但这个在Linux下面应用广泛的开源软件无官方支持的Windows版本。后来看到博客园在用NorthScale Memcached Server,貌似共享收费,又犹豫了。其实项目里的需求很简单,也想自己用.Net Cache来实现,但稳定性难以评估,开发维护成本又似乎太大,没办法,My SQL Memory Storage成了唯一选择,因为几乎不怎么需要编写代码。
先看官方手册,然后写了个简单的性能测试。因为官方最新的文档都是英文版的,所以译了5.5版本 MySQL Memory Storage章节。
官方文档(译自5.5版本的The Memory Storage Engine)
Memory存储引擎将表的数据存放在重启后会丢失。
MySQL Cluster(集群)支持与Memory引擎同样的功能并且提供更高的性能,同时拥有Memory不支持的更多其它功能:
行锁机制更好的支持多线程多用户并发。
更好的支持读写混合语句以及扩展。
可选择磁盘存储介质永久保存数据。
Shared-nothing和分布式架构保证无单点故障,99.999% 可用性。
数据自动分布在各个节点,应用开发者无需考虑分区或分片解决方案。
支持MEMORY中不支持的变长数据类型(包括BLOB 和 TEXT)。
关于MySQL集群与Memory引擎更多细节方面的比较,可以查看Scaling Web Services with MySQL Cluster: An Alternative to the MySQL Memory Storage Engine,该白皮书包括了这两种技术的性能研究,并一步步指导你如何将Memory用户迁移到MySQL集群。
每个Memory表和一个磁盘文件关联起来。文件名由表的名字开始,并且由一个.frm的扩展名来指明它存储的表定义。要明确指出你想要一个Memory表,可使用ENGINE选项来指定:
CREATE TABLE t (i INT) ENGINE = MEMORY;
--转自