随笔分类 - 数据库
摘要:以mysql为关系库的例子.redis,hbase为nosql例子数据库查询瓶颈来自:全表扫描,随机io,关系数据库性能提升主要围绕如何利用索引,存储优化来改善查询查询和更新的性能往往是对立的.mysql通过索引可以增加特定查询的性能.索引实质是建立一张索引表.存储上在一个页内按索引顺序存储(没页大
阅读全文
摘要:索引就是表,是的,把索引当一张表看待就好 当你写一条sql语句,from tbl时,你检索的不一定是tbl表,而是tbl表的集合,这个集合包括由若干个表组成 每个表都含有若干个字段, 有一个表含有所有字段,且拥有一个主键列(如果dba没有指定,系统也会创建这个列),这个表就是我们通常说的表.这里我叫
阅读全文
摘要:count(*) count(f)count(*)统计表的行数,即使某一行全为null也会统计进来.count(f) 统计f列非空的行数量.明确了定义后,我们就能两者其实面向不同的需求层面. 性能问题: count(*)要的是表的行数,而不管null问题,获取行数有几个渠道,全表扫(慢),走索引(快
阅读全文
摘要:数据库优化几个方面:库表设计,表的物理设计(索引,数据类型,分区表),sql语句优化 经常看到有人会写出一些很复杂的sql。我很好奇他们是怎样想到这样写的。毕竟我写的都是很简单的sql。 来看一个很常见的场景: 有一个用户发帖表有如下三个字段,user_id,bolg_id,post_date。一个
阅读全文
摘要:mysq,oracle的索引组织表是按主键顺序存储数据的(页内)。 如果数据插入顺序和主键不一致,页间无法保证物理上的顺序存储。移动数据块的代价很大。可以通过工具重新顺序化存储结构。 mysql新增数据块时,会留一定的空间给未来新增的数据用,另外当数据块的充满程度达到一定比例时,不会再允许新增数据
阅读全文
摘要:众所周知,redis是单线程的。 多个客户端发来的所有指令会按接受到的顺序一个个的执行。 那么multi,exec的作用是什么呢?和pipeline区别在哪? 如果只是简单的认为,multi可以在客户端打包要执行的命令批量的提交到服务端,从而减少每条指令每次发送的网络通讯。那么和pipeline有何
阅读全文
摘要:The readConcern option is available for the following operations: find command aggregate command and the db.collection.aggregate() method distinct com
阅读全文
摘要:mysql事务具有原子性,隔离性,一致性的特点。 redis提供multi, exec,watch来支持事务: 原子性,一致性: redis保证在multi,exec之间的语句作为一个整体执行,redis在exec后,是无法回滚的,会出现部分成功,部分失败情况。 隔离性(mysql默认可重复读:事务
阅读全文
摘要:hbase的数据模型从逻辑上可以分类为键值存储或者是有序映射的映射。物理数据模型是基于列族的列式数据库,单个记录以键值形式存储。 HBase把数据记录保存在HFile里,这是一种不能更改的文件格式。因为记录一旦写入就不能修改,新值将保存在新 HFile里。在读取数据和数据合并时,数据视图需要在内存中
阅读全文
浙公网安备 33010602011771号