数据库小结
GC的常见指标
GC的吞吐量:描述清理垃圾的速度,CPU处理业务的事件 / 总时间(业务+GC)
GC的延迟:单次GC的耗时,通常小于1%
数据库性能影响
事务
锁
索引
几种命令:
DQL:查询 DML:操作 DDL:定义
事务
ACID
原子性:最小单元,要么全部成功,要么全部失败
一致性:数据库始终保持一致的状态,例如转账,A和B的总和保持一致
隔离性:事务间不会相互干扰
持久性:持久到磁盘,故障不会丢失
锁
表级锁
整个表加锁,上锁前先会给更高级别加意向锁
手动加锁:for update
自动锁库:锁库就是锁所有的表,dump数据库的场景下会涉及
行锁
• 记录锁(Record): 始终锁定索引记录,注意隐藏的聚簇索引 • 间隙锁(Gap): 锁住一个范围 • 临键锁(Next-Key): 记录锁+间隙锁的组合; 可“锁定”表中不存在记录,左开右闭 • 谓词锁(Predicat): 空间索引
可重复读:通过临键锁防止一个范围内插入数据,解决幻读问题
隔离级别默认可重复
脏读 • 读未提交: READ UNCOMMITTED 不可重复读 • 读已提交: READ COMMITTED MVCC 幻读 • 可重复读: REPEATABLE READ MVCC+间隙锁 • 可串行化: SERIALIZABLE 事务是串行执行的
当前读:
设置方式
全局设置
会话设置
PG
1.PG里所有的缓存都有2分,内核态+用户态
2.worker的memory设置比较大
修改表结构
索引重建
锁表
抢占资源
主从延时