分类目录归档:数据库db

LSM VS B-Tree

LSM树整个结构不是有序的,所以不知道数据在什么地方,需要从每个小的有序结构中做二分查询,找到了就返回,找不到就继续找下一个有序结构。所以说LSM牺牲了读性能。但是LSM之所以能够作为大规模数据存储系统在于读性能可以通过其他方式来提高,比如读取性能更多的依赖于内存/缓存命中率而不是磁盘读取。 阅读全文

小猪教你搭建一个ssdb高可用集群

概述

ssdb是一个大规模持久化kv存储,类似redis,只是存储介质增加了ssd+sata,适合写入redis数据和qps规模较大,数据读取占比较小,想降低redis内存服务器购买成本,同时使读写性能上损失小些。有朋友公司使用了1T+的ssdb,想实现高可用方案,一直比较忙… 这两天终于有空研究了一下,给一个简单的多主水平分片+主从热备+读写分离代理解决方案 阅读全文

从PHP客户端看MongoDB通信协议

MongoDB 的 PHP 客户端有一个 MongoCursor 类,它是用于获取一次查询结果集的句柄(或者叫游标),这个简单的取数据操作,内部实现其实不是那么简单。本文就通过对 MongoCursor 类一些操作进行分析,向大家揭开 MongoDB 客户端服务器通信的一些内部细节。 阅读全文

mysql ICP索引下推(Index Condition Pushdown)

概述

Index Condition Pushdown (ICP)是MySQL用索引去表里取数据的一种优化。如果禁用ICP,引擎层会穿过索引在基表中寻找数据行,然后返回给MySQL Server层,再去为这些数据行进行WHERE后的条件的过滤。ICP启用,如果部分WHERE条件能使用索引中的字段,MySQL Server 会把这部分下推到引擎层。存储引擎通过使用索引条目,然后推索引条件进行评估,使用这个索引把满足的行从表中读取出。ICP能减少引擎层访问基表的次数和MySQL Server 访问存储引擎的次数。总之是 ICP的优化在引擎层就能够过滤掉大量的数据,这样无疑能够减少了对base table和mysql server的访问次数。 阅读全文

MySQL InnoDB的B+树索引

B+树索引其本质就是B+树在数据库中的实现,但是B+索引在数据库中有一个特点就是其高扇出性,因此在数据库中,B+树的高度一般都在2~3层,也就是对于查找某一键值的行记录,最多只需要2到3次IO,这倒不错。因为我们知道现在一般的磁盘每秒至少可以做100次IO,2~3次的IO意味着查询时间只需0.02~0.03秒。 阅读全文

MongoDB导出/导入指定条件数据

–export
~/mongodb2.4.6/bin/mongoexport -h 127.0.0.1:27017 -d intelligence -c intelligence -q ‘{“type”:3,”source”:{$in:[208,210]}}’ -o /home/map/backup/tmp/intelligence_208_210.data
–import
~/mongodb2.4.6/bin/mongoimport -h 127.0.0.1:27017 -d intelligence_test -c intelligence /home/map/backup/tmp/intelligence_208_210.data

MongoDB运行状态、性能监控,分析

mongo stat
 这篇文章的目的是让你知道怎么了解你正在运行的Mongdb是否健康。

mongostat详解

mongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mongostat来查看mongo的状态。 阅读全文

Centos下安装php PDO PostgreSQL扩展

1.安装 wget http://pecl.php.net/get/PDO_PGSQL-1.0.2.tgz tar -zxvf PDO_PGSQL-1.0.2.tgz cd PDO_PGSQL-1.0.2 ~/php/bin/phpize export PGSQL_INCLUDE=/home/users/yanjingang/postgresql/include export PGSQL_LIBDIR=/home/users/yanjingang/postgresql/lib ./configure –with-php-config=/home/users/yanjingang/php/bin/php-config –with-pdo-pgsql=/home/users/yanjingang/postgresql/ –with-pgsql=/home/users/yanjingang/postgresql/ make && make install 2.配置 vim php/etc/ext/pdo_pgsql.ini   添加 [pdo_pgsql] extension=”pdo_pgsql.so” ~/php/sbin/php-fpm restart ~/webserver/bin/lighttpd.sh restart 3.done

深入浅出Symfony2 – 结合MongoDB开发LBS应用

随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理。我所在的项目也正从事相关系统的开发,我们使用的是Symfony2+Doctrine2 ODM+MongoDB的组合。 阅读全文

MySQL数据库准入规范

当前版本

  • 当前版本: 0.6
  • MySQL数据库准入规范由DBA起草,经rd\op\tc评审通过;

目录

MySQL数据库准入规范
当前版本
目录
1. MySQL 准入的背景和目的
2. MySQL 数据库准入项
2.1 数据库设计
2.1.1 数据库设计
2.1.2 表结构设计
2.1.3 索引设计
2.1.4 分区表
2.1.5 中间表和备份表
2.1.6 分库分表
2.1.7 数据库账号
2.1.8 字符集
2.1.9 数据库连接
2.1.10 其他
2.2 SQL编写
2.2.1 SELECT语句
2.2.2 DML语句
2.2.3 多表联合查询
2.2.4 事务
2.2.5 表扫描方式
2.2.6 排序和分组
2.2.7 数据导出导入
2.2.8 cache的使用
2.2.9 其他
2.3 MySQL 服务器及实例
2.3.1 硬件及网络
2.3.1.1 OS内核
2.3.1.2 磁盘相关
2.3.1.3 机房及网络
2.3.2 数据库实例
2.3.2.1 MySQL 版本
2.3.2.2 MySQL 目录
2.3.2.3 MySQL 参数
2.3.2.4 MySQL 架构
2.3.2.5 MySQL 日志
2.3.2.6 MySQL 备份
2.4 中间层DBProxy
2.4.1 服务器配置和命名
2.4.2 机房和网段
2.4.3 DBProxy日志
2.4.4 访问账号和权限
3. 上线及监控
3.1 上线时间窗口
3.2 上线单内容
3.3 MySQL 和DBProxy监控
3.4 产品线SLA
3.5 其他
4. MySQL 风险点及BUG
4.1 同步中断
4.2 主从数据不一致
4.3 数据库crash 阅读全文