Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1891
  • 博文数量: 2
  • 博客积分: 50
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-02 20:59
文章分类

全部博文(2)

文章存档

2012年(1)

2011年(1)

我的朋友
最近访客

分类: IT业界

2011-12-02 21:02:42

可是,当服务器封闭之时,所有存储在Memory表里的数据被丢失。由于表的定义被存在磁盘上的.frm文件中,所以表自身继承存在,在服务器重启动时它们是空的。


 

  充分施展内存引擎的特点:高速度,低延迟。


 

  每个Memory表和一个磁盘文件联系关系起来。


 

  Shared-nothing和分布式架构保证无单点故障,99.999% 可用性。


 

  可选择磁盘存储介质永久保留数据。


 

  行锁机制更好的支持多线程多用户并发。由于官方最新的文档都是英文版的,所以译了5.5版本 MySQL Memory Storage章节。文件名由表的名字开始,并且由一个.frm的扩展名来指明它存储的表定义。


【IT168技术】需求源自项目中的MemCache需求,开始想用MemCached(官方站点: ),但这个在Linux下面应用广泛的开源软件无官方支持的Windows版本。


 

  支持MEMORY中不支持的变长数据类型(包括BLOB 和 TEXT)。


 

  MySQL Cluster(集群)支持与Memory引擎同样的功能并且提供更高的机能,同时拥有Memory不支持的更多其它功能:


 

  但是内存表的机能受制于单线程的执行效率和写操纵时的表锁销,这就限制了内存表高负载时的扩展性,特别是混合写操纵的并发处理。后来看到博客园在用NorthScale Memcached Server(官方站点:),貌似共享收费,又犹豫了。这使得它们非常快,并且对创建临时表非常有用。


 

  数据自动分布在各个节点,应用开发者无需考虑分区或分片解决方案。实在项目里的需求很简朴,也想自己用.Net Cache来实现,但不乱性难以评估,开发维护本钱又好像太大,没办法,My SQL Memory Storage成了独一选择,由于几乎不怎么需要编写代码。


 

  (译自5.5版本的The Memory Storage Engine)


 

  先看官方手册,然后写了个简朴的机能测试。


 

  只读或读为主的访问模式(不适合频繁写)。此外,内存表中的数据在服启后会丢失。


 

  更好的支持读写混合语句以扩展。要明确指出你想要一个Memory表,可使用ENGINE选项来指定:


 

  关于MySQL集群与Memory引擎更多细节方面的比较,可以查看Scaling Web Services with MySQL Cluster: An Alternative to the MySQL Memory Storage Engine,该白皮书包括了这两种技术的机能研究,并一步步指导你如何将Memory用户迁移到MySQL集群。

如它们名字所指明的,Memory表被存储在内存中,且默认使用哈希索引。


 

  能像会话(Session)或缓存(Caching)一样利便操纵和治理。


 

  但愿部署内存引擎的开发者们会考虑MySQL Cluster是否是更好的选择,参考如下Memory引擎的使用场景及特点:


 

  Memory 与 MySQL Cluster的比较


 

MySQL Memory存储引擎:上风及机能测试  


 

  Memory存储引擎特性:


 

  Memory存储引擎将表的数据存放在内存中。 Memory替换以前的Heap成为首选项,但同时向下兼容,Heap仍被支持。

阅读(328) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:把我忘的无影无形

给主人留下些什么吧!~~