数据库2-存储-Infinite.ppt
文本预览下载声明
数据库的存储;找名字为xxx的书;
select * from book where name = xxx;
找作者为xxx的书;
select * from book where auth = xxx;
找出作者xxx的书的数目;
select count(1) from book where name = xxx;;先在检索室进行查找,获得编号,然后去获取图书。
需要多种检索手段。
有些结果甚至可以直接在检索室获得。
书的排放有两种方法。;一块一般保存100个节点;
层级一般是4级;
叶的数据是排序存放的;
保持一定的空隙;
动态树;
等值查找,范围查找;
;邮编,长途区号;
HASH方法的选择比较重要;
CPU操作跟内存操作比读取硬盘速度快;
动态变化;
等值查找速度快;
;并不负责实际的数据存储;
维护外部的连接和数据通讯;
进行SQL语义解析;
根据表结构和SQL语句,进行优化;
将优化后的SQL转为存储引擎API调用,提交给存储引擎;
存储引擎有MyISAM,InnoDB,Memory等;;MyISAM使用堆存放,InnoDB使用簇族索引;
是否事务;
锁颗粒;
文件结构不同;
InnoDB可以缓存数据,可以建立自适应HASH索引;
一般使用InnoDB;
;5.6版本之前,存储引擎甚至无法知道检索条件;
一些排序,聚合也不由存储引擎负责;
优化器决定使用什么索引,以什么顺序执行SQL;
在命中缓存情况下,甚至不需要调用存储引擎;
;主从复制,主主复制;
增量备份;
恢复到某一时间点,或者跳过某一操作;
默认会一直增长;
;Key-Value形式;
BSON格式存放;
JS形式的查询语言;
使用复制集,sharding,可以动态增加删除;
;换掉解析器;
对插入的BSON进行遍历,插索引等;
;启动时候创建3个操作日志,共3G。
一个库建立一个目录,文件从64M到2G;
文件采用mmap的方法映射到内存;
;db.test.ensureIndex({userid:1},{unique:true});
db.test.find({hello:world,number:{$gte:1000}});
db.test.update({mailbox:abc@}, {$inc :{ score:3}, $addToSet:{mobile:120110119xxx, tag:3799881}}, true, true);
db.test.aggregate( [ {$group:{_id:$i, total:{$sum:1}}} , {$match:{total:{$ge, 10}}} ] );
db.test.count({tag:/^11,/});
;END
显示全部