基础理论
数据库设计的三大范式
- 《数据库的三大范式以及五大约束》
- 第一范式:数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性;
- 第二范式(2NF):满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情;
- 第三范式:必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键);
MySQL
原理
- 《MySQL的InnoDB索引原理详解》
- 《MySQL存储引擎--MyISAM与InnoDB区别》
- 两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁
- 《myisam和innodb索引实现的不同》
InnoDB
优化
- 《MySQL36条军规》
- 《MYSQL性能优化的最佳20+条经验》
- 《SQL优化之道》
- 《mysql数据库死锁的产生原因及解决办法》
- 《导致索引失效的可能情况》
- 《 MYSQL分页limit速度太慢优化方法》
- 原则上就是缩小扫描范围。
索引
聚集索引, 非聚集索引
MyISAM 是非聚集,InnoDB 是聚集
复合索引
自适应哈希索引(AHI)
explain
NoSQL
MongoDB
- MongoDB 教程
- 《Mongodb相对于关系型数据库的优缺点》
- 优点:弱一致性(最终一致),更能保证用户的访问速度;内置GridFS,支持大容量的存储;Schema-less 数据库,不用预先定义结构;内置Sharding;相比于其他NoSQL,第三方支持丰富;性能优越;
- 缺点:mongodb不支持事务操作;mongodb占用空间过大;MongoDB没有如MySQL那样成熟的维护工具,这对于开发和IT运营都是个值得注意的地方;
Hbase
- 《简明 HBase 入门教程(开篇)》
- 《深入学习HBase架构原理》
- 《Hbase与传统数据库的区别》
- 空数据不存储,节省空间,且适用于并发。
- 《HBase Rowkey设计》
- rowkey 按照字典顺序排列,便于批量扫描。
- 通过散列可以避免热点。