发掘数据库内存表的用处

来源:未知 责任编辑:责任编辑 发表时间:2014-01-25 11:38 点击:
发掘数据库内存表的用处
 
内存表(或称内存数据库中的表),是数据库把表中的数据完全放在内存,重启数据库后,内存表中的不会有任何数据,但内存表的表结构还存在。首先需要明确一个观念,使用内存表和程序直接在内存操作理论速度是一样。以下为内存表的power功能描述。
 
一、内存表的优点:
 
(一)、速度很快
  没有最快,只有更快。内存的速度是除了cpu cache外最快的存储设备,所以不要怀疑内存表的速度。理论上内存表的速度和最快通信方式速度是一样,因为都在内存中操作。缺点在于不能持久存储,只有扬长避短,才能发挥内存表的优势。内存速度可达6G/S以上,而硬盘速度不稳定算为0.2G/S,相差30倍以上,有的系统甚至相差100倍以上.  www.2cto.com  
 
(二)、标准sql操作
  两个应用程序的通信,是多么让人痛苦,什么文件记录锁、管道、队列、消息队列、信号灯、共享内存、com组件、soap、xml、soa、json/bson等等,全是奔通信而来,让人眼花缭乱。巨大的复杂且不说,关是n个操作系统的兼容性就够头痛的。而基于sql的内存表跨语言,跨平台,跨虚拟机、跨数据库、跨老菜鸟。说来说去,还是sql标准带来的好处。
 
(三)、支持事务
  以上通信不支持事务,是很多高性能通信都不能解决的问题,更别说自定义的socket协议。支持事务在通信可能不是必要,但有了更安全的选择。
 
二、内存表缺点:
 
(一)、不能持久化
 
  不能存入硬盘,因为硬盘的速度太慢,所以出现了内存表。持久化,只要做到服务正常停止时,把内存表数据保存到普通数据表就可以了,比队列之类的持久化容易得多。
 
(二)、占用内存过大
 
  现在服务器内存已经很大了,很多内存浪费掉了。用内存表,你的内存使用量完全可以控制。
 
三、内存表可发掘功能:
 
(一)、用于进程通信
 
  不同程序的进程通信、汲及各大操作系统内部知识,实现难度大。完全可以内存表来交换数据,解决了硬盘数据表交换数据慢的问题,解决了进程通信不标准化问题,解决多个操作系统进程通信的困难。另外本机通信可以不通过tcp/ip协议,使用相关数据库的管道通信,进一步提高通信效率。
 
(二)、用于业务系统缓存  www.2cto.com  
 
  一个数据库支持的系统,都有很多表。为了追求速度,我们经常把不需要频繁更新的表缓存在应用程序中,但这种缓存不能多个程序共享,对缓存的控制也需要相当的技巧。其实可以保持原有框架不动,建立内存表,表结构和 “需缓存表” 一样。在应用程序启动后把 “需缓存表” 数据插入内存表中。当有“需缓存表”有数据更新时,只要再插一份到内存表。解决了自行控制缓存的风险,通过内存表的参数设置解决了内存的使用量问题。
 
(三)、代替网络通信
 
  特别对于局域网应用,很多时候需要通信网络通信来解决服务器和客户端的数据同步问题。网络通信的本质是进程通信的延伸,但又有自已特点。如会话控制,通信协议控制。而基于内存表的通信建立在坚实的c/s数据库服务器上。在更高层解决了很多网络通信问,你只要关注于通信协议的业务逻辑。当需要传输二进制大数据时,其实我们可以在基于内存表的通信基础上,让服务器再通过scoket把二进制传入。在局域网c/s框架下,你可以通过权限控制,动态建立内存表,来完成用户交互。
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Request.ServerVariables 参数大全
  • 执行全文索引时出现权限不足的解决方法
  • 导入excel文件处理流程节点的解决方案
  • 查看sql修改痕迹(SQL Change Tracking on Table)
  • App数据层设计及云存储使用指南
  • PostgreSQL启动过程中的那些事三:加载GUC参数
  • MongoDB安装为Windows服务方法与注意事项
  • Percolator与分布式事务思考(二)
  • 写给MongoDB开发者的50条建议Tip1
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1