依赖关系模型创建的数据库,用一个二维表格及其关系组成的数据组织,最大的特点是事务的一致性
基于非关系模型的数据库,非关系模型包括
比较项 | SQL | NoSQL |
---|---|---|
事务一致性 | 强 | 弱 |
扩展性 | 难 | 易 |
高并发读写效率 | 低 | 高 |
实时性 | 高 | 低 |
数据一致性 | 高 | 低 |
冗余 | 低 | 高 |
同一信息的重复储存,叫做冗余
形成原因
冗余的坏处
指对系统进行的一个逻辑单元,包括一组操作。会把数据库从一种一致状态切换为另一种一致状态。普通文件系统是没有此特性的。
事务的定义极其严格,必须同时满足四个特性,但是数据库厂商处于各种目的,比如性能,并没有严格满足ACID的要求
单进程多线程模型
最新的mysql版本(8.0.12)支持的存储引擎
mysql->show engines; //查看所有支持的存储引擎和默认存储引擎
mysql->select @@tx_isolation\G; //查看隔离级别
mysql->select @@global.tx_isolation|G; //查看全局的事务隔离级别
对比项 | redo | undo |
---|---|---|
操作者 | InnoDB引擎层 | 数据库层 |
生效范围 | InnoDb引擎 | 所有引擎 |
日志内容 | 物理格式日志,记录对于每个页的修改 | 逻辑日志,记录SQL语句 |
大致格式 | page(2,3) offset 32, value 1,2 | insert into.. |
写入时机 | 事务提交后一次写入 | 事务进行中不断写入 |
一个事务对应记录 | 1条 | 多条,并发还会导致乱序 |
恢复速度 | 快 | 慢 |
以下语句提交有隐式的commit操作
查看本机行存储格式
Compact格式
类型 大小 范围(有符号) 范围(无符号) 用途 tinyint 1字节 (-128, 127) (0, 255) 小整数值 smallint 2字节 (-32768, 32767) (0, 65535) 大整数值 mediumint 3字节 (-2^(3x7), 2^(3x7) -1 ) (0, 2^(3*8) - 1) 大整数值 int/integer 4字节 .. .. 大整数值 bigint 8字节 .. .. 极大整数值 float 4字节 .. .. 单精度浮点数 double 8字节 .. .. 双精度浮点数 decimal decimal(M,D),若M>D,为M+2,否则D+2 小数
数据库 | 索引使用的数据结构 |
---|---|
mysql | B+树 |
mongodb | B树(B-树) |
该字段可以评估组合索引是被完全使用,还是只有最左部分被使用,越小表示索引占用磁盘空间越小,索引更高效
通过配置主库和从库,主库负责读取删改,从库负责只读,做到读写分离,并根据读写要求的不同配置不同的系统参数
该工具可在不停服的情况下,实现数据同步。
大的前提是遵守范式以减少冗余,其次才综合业务量设置冗余。合理选择字段和建立索引
索引是排好序的数据结构,B+树是为了适应磁盘数据的存储设计的结构,包括多叉结构降低高度较少io次数,非叶节点不存数据增加索引量,叶节点相连便于范围查询,节点大小设置为页大小充分利用io调用。
根据查询条件设置合适的组合索引,时常用explain分析并调整索引
略
索引优化,参数优化,主从优化,分库分表等等