ECOS-Ecstore mongodb大数据 读写效率优化
转自同功BBS
拆表存取kv
<?php /* 经过拆变优化的ECStore mongodb 类 base/lib/kvstore/mongodb.php*/ class base_kvstore_mongodb extends base_kvstore_abstract implements base_interface_kvstore_base { static private $_mongodb = null; function __construct($prefix) { $prefix = is_string($prefix) ? preg_replace("(\/|\\|\-|-|-|\_|_)",'.', $prefix):md5(var_export($prefix ,true)); $this->prefix = $prefix; if(!isset(self::$_mongodb)){ $server = defined('MONGODB_SERVER_CONFIG')?MONGODB_SERVER_CONFIG:"mongodb://localhost:27017"; $option = defined('MONGODB_OPTION_CONFIG')?eval(MONGODB_OPEION_CONFIG):array("connect" => TRUE); self::$_mongodb = new Mongo($server,$option); } $this->mongodb = self::$_mongodb->selectCollection('ecos',$this->prefix); }//End Function public function fetch($key, &$value, $timeout_version=null) { $store = $this->mongodb->findOne(array('key'=>$this->create_key($key))); if(!is_null($store) && $timeout_version < $store['dateline']){ && ($store['dateline']+$store['ttl']) < time()){ return false; } $value = $store['value']; return true; } return false; }//End Function ) { $store['value'] = $value; $store['dateline'] = time(); $store['ttl'] = $ttl; $store['key'] = $this->create_key($key); $store['prefix'] = $this->prefix; $res = $this->mongodb->update(array('key'=>$store['key']), $store, array("upsert" => true)); return $res; }//End Function public function delete($key) { return $this->mongodb->remove(array('key'=>$this->create_key($key))); }//End Function public function recovery($record) { $key = $record['key']; $store['key'] = $this->create_key($key); $store['value'] = $record['value']; $store['dateline'] = $record['dateline']; $store['ttl'] = $record['ttl']; $res = $this->mongodb->update(array('key'=>$store['key']), $store, array("upsert" => true)); return $res; }//End Function }//End Class
保证各关键表索引情况
每当mongodb 数据量激增,读写频繁,锁表严重,基本就是索引未加,或未经过拆表方案。
/*mongo 命令行操作*/ use ecos show collections db.printCollectionStats() db.}) db.b2c.cart.ensureIndex({key:}) db.tbdefine.ensureIndex({ke:}) db.cache.content.nodes.ensureIndex({key:}) db.b2c.goods.ensureIndex({key:})
ECOS-Ecstore mongodb大数据 读写效率优化的更多相关文章
- mysql/oracle jdbc大数据量插入优化
10.10.6 大数据量插入优化 在很多涉及支付和金融相关的系统中,夜间会进行批处理,在批处理的一开始或最后一般需要将数据回库,因为应用和数据库通常部署在不同的服务器,而且应用所在的服务器一般也不会 ...
- sqlserver 数据查询效率优化
首先优化是具体情况具体分析,从硬件.改进表结构.索引.改进sql查询语句.存储方式都有关系等多方面入手 比如单表数据量(100w-200w条)不大的情况下,查询效率慢 可以从优化sql语句.对多个排序 ...
- MySQL大数据分页的优化思路和索引延迟关联
之前上次在部门的分享会上,听了关于MySQL大数据的分页,即怎样使用limit offset,N来进行大数据的分页,现在做一个记录: 首先我们知道,limit offset,N的时候,MySQL的查询 ...
- java+Mysql大数据的一些优化技巧
众所周知,java在处理数据量比较大的时候,加载到内存必然会导致内存溢出,而在一些数据处理中我们不得不去处理海量数据,在做数据处理中,我们常见的手段是分解,压缩,并行,临时文件等方法; 例如,我们要将 ...
- Oracle大数据SQL语句优化
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- SQL优化-大数据量分页优化
百万数据量SQL,在进行分页查询时会出现性能问题,例如我们使用PageHelper时,由于分页查询时,PageHelper会拦截查询的语句会进行两个步骤 1.添加 select count(*)fro ...
- MongoDB 大数据技术之mongodb中在嵌套子文档的文档上面建立索引
一.给collection objectid赋自定义的值 MongoDB Enterprise > db.testid.insert({_id:{imsi:"4567890123&qu ...
- Kafka 集群在马蜂窝大数据平台的优化与应用扩展
马蜂窝技术原创文章,更多干货请订阅公众号:mfwtech Kafka 是当下热门的消息队列中间件,它可以实时地处理海量数据,具备高吞吐.低延时等特性及可靠的消息异步传递机制,可以很好地解决不同系统间数 ...
- MongoDB大数据高并发读写性能测试报告
服务器大小: 单节点部署,磁盘1T,内存128G 并发导入规模: 1,多线程并发导入csv文件 2,csv文件分1万.10万.100万.200万行记录4种大小 3,每个csv对应一个collectio ...
随机推荐
- HTML5学习之Web存储
在客户端存储数据 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前, ...
- libvirt里的面向对象的C语言
C语言:类的声明和定义 // 通用父类的定义 struct _virClass { virClassPtr parent; unsigned int magic; char *name; size_t ...
- 转:iOS 屏幕适配,autoResizing autoLayout和sizeClass图文详解
1. autoResizing autoresizing是苹果早期的ui布局适配的解决办法,iOS6之前完全可以胜任了,因为苹果手机只有3.5寸的屏幕,在加上手机app很少支持横屏,所以iOS开发者基 ...
- 无线hacking系统—wifislax
简介 官方中文网站: http://wifislax.cn/ WiFiSlax 是在Slax基础上定制出来的,由西班牙开发.它包含了各种各样的安全和诊断工具.该发行主要的成名原因是把各种各样的非官方网 ...
- java中的URL InetAddress类
/* * InetAddress类: * 用于标识网络上的硬件资源,表示互联网协议(ip)地址,是java对ip地址的封装. * 其实例对象包含以数字形式保存的IP地址,主机名. * InetAddr ...
- Android如何查看应用签名信息
转自http://www.trinea.cn/android/android-view-signatures/comment-page-1/ 介绍Android如何查看自己的应用签名及三方APK或系统 ...
- pgmpy包的安装,以及conda的安装
pgmpy包的安装,以及conda的安装 pgmpy的官方网站是这样说明安装过程的: 链接:Installation 共有三个步骤,第一步是安装依赖包 首先它讲述了在linux下使用pip安装的方法: ...
- informix 存储过程结构
1.简介 存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行 ...
- Linux服务器性能指标查询命令安装
Linux命令扫盲 之 sar 今天在读<大规模Web服务开发技术>一书的时候,书中提到了sar这个命令,感觉很有用,有必要整理学习一下.(对于一位Linux初学者,不能放过任何一个学 ...
- VMMap(查看内存工具)
来源: http://www.cnblogs.com/georgepei/archive/2012/03/07/2383445.html http://www.cnblogs.com/georgepe ...