这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天,本次RDBMS关系型数据库进行了学习,其中还对一些概念的细分进行了学习。同时对于数据库的设计也有了了解。
RDBMS指的是关系型数据库。
数据的分类
-
冷数据:
对于离线类不经常访问的数据,比如备份数据、档案与操作日志数据、话单凭证与统计数据。冷数据不需要实时访问到离线数据,用于灾难恢复的备份或者因为要遵守法律规定必须保留一段时间。
-
热数据:
需要被计算节点频繁访问的在线类数据。指即时的位置状态、交易和浏览行为
-
温数据:
是非即时的状态和状态和行为数据
RDBMS的瓶颈:
CPU---高并发场景连接数
磁盘I/O:单机的存储容量、海量数据的读写
- 垂直切库--分表:单个物理数据库的资源连接数是有限制的。
- 垂直切表--分表:数据库以行为单位将数据加载到内存中(一条记录占用空间过大会导致跨页;内存能加载更多数据,命中率更高,减少了磁盘IO)
- 水平切分--分区:单表数据量达到百万或者千万级别,数据量行数巨大,存在单库读写、存储性能瓶颈。
- 范围分区:对某个值进行分区
- 列表分区:应用于重复性高的数据;数据管理能力较强,但数据分布可能不均匀。
- 哈希分区:应用于重复性低的数据;数据分布较为均匀。
- 复合分区:(列表分区、哈希分区)
数据库表设计:
(1)需求设计
(2)概念结构设计
(3)逻辑结构设计
(4)数据库物理设计
(5)数据库的实时
(6)数据库运行和维护
数据库表设计的三大范式:
需求>性能>表结构
第一范式:列的原子性(1NF)
第二范式:所有列斗鱼主键有关,无部份依赖(2NF)
第三范式:所有列都与主键直接相关,无部份依赖,无传递依赖(3NF)
锁:
按照锁的粒度把数据库锁分为表级锁和行级锁。
表锁:对当前操作的整张表加锁,实现简单,资源消耗比较少,加锁快,不会出现死锁。其锁定粒度最大,触发锁冲突的概率最高,并发度最低。MyISAM和InnoDB都支持表级锁
行锁:对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,并发度高,但加锁的开销也最大,加锁慢,会出现死锁。InnoDB支持行级锁。