数据库

发布时间 2023-08-24 14:04:26作者: lwx_R

1.存储引擎

数据库底层软件组织,不同引擎提供不同存储机制,索引技巧,锁定水平等功能,使用不同的存储引擎可以获得特定功能。
MyIASM InnoDB Memory Archive Federated

2.类型

2.1 MyIASM

MySQL默认引擎,没有提供事务支持,行级锁,外键。
插入更新需要锁定整个表,效率低
读取速度快,不占用大量内存,存储资源,ISAM静态索引结构

2.2 Memory

Heap堆内存,使用在内存的内容创建表,每个表只实际对应一个磁盘文件,访问非常快,默认使用Hash索引
服务关闭,表内数据丢失,支持散列索引和B树索引,B树索引可以使用部分查询和通配查询,也可以使用><=等操作,散列索引较快但是对于比较较慢

3.InnDB

底层为B+树,B树每个节点对应innodb的一个page,page大小固定16k,只有非叶子结点有键值,叶子节点包含完成数据
场景适用:

  • 经常更新的表,适合处理多重并发的更新请求
  • 支持事务
  • 可以从灾难中恢复(bin-log日志)
  • 外键约束 只有它支持外键
  • 自增列 auto_increment

2.索引

MySQL高效获取数据的数据结构。

2.1 分类

  • 唯一性索引:值唯一

3.事务

3.1 属性

  • 原子性:事务是一个完整操作
  • 一致性:事务完成,数据必须一致
  • 隔离性:并发事务隔离,事务必须独立
  • 永久性:事务完成后,修改永久保持

4.存储过程

5.触发器

6.并发策略

6.1 乐观锁

6.2 悲观锁

  • 排它锁 写锁
  • 共享锁 读锁

6.3 时间戳

单独加一列时间戳。每次读时,对该字段加一,提交前,进行比对,如果比数据库值大,允许保存,否则不允许。

7.数据库锁

7.1 行级锁

排它锁,防止其他事务修改此行

7.2 表级锁

对整张表加锁

7.3 页级锁

锁定粒度介于行级锁和表级锁中间一种