文章分类 - 数据库
摘要:这里记录一些没有整理的数据库和mysql相关知识。 1.Mysql常见存储引擎 1)InnoDB存储引擎 为表提供事务处理、回滚、崩溃修复和多版本并发控制功能(或机制)。支持自动增长键值(AUTO_INCREMENT)、以及外键。 InnoDB创建的表存储在frm文件中。优点是良好的事务处理、崩溃修
阅读全文
posted @ 2022-03-28 15:05
Cheung-10
摘要:数据库日志文件保存的是各类操作记录,这些操作记录具有幂等性,即同一个操作执行多次结果相同。 这样可以确保在出现故障回放操作记录后能恢复数据。 1.redo日志 记录了innoDB存储引擎的事务日志,以用于数据库故障后的恢复,确保数据完整性。 事务commit时,需要等待redo日志写入,完成后方可确
阅读全文
posted @ 2022-03-24 14:37
Cheung-10
摘要:索引对应数据库的一行(记录)或某一个(及多个)字段。 1.索引类型 1)聚集索引:加在行主键上的索引(最常用的索引) 2)非聚集索引:加在普通字段上的索引。 3)联合索引:多个字段组成的索引。 值得注意的是,无论何种索引,均保存在B+树(仅叶子节点保存实际value的值)。 2.索引匹配规则 在查询
阅读全文
posted @ 2022-03-06 15:38
Cheung-10
摘要:1. 并发竞争 当有大量对同一数据的并发请求时。会产生写竞争。 解决思路: 1)如果并发量比较低,则采用数据库事务隔离(数据库锁等) 2)通常后台会引入消息队列来进行削峰,但并不能提升性能。 3)可以在缓存(redis)中保存数据,并加锁来保证数据幂等性。如果使用悲观锁,则可能造成响应等待时间较长。
阅读全文
posted @ 2022-02-23 13:20
Cheung-10
摘要:1.数据库锁 一般的关系型数据库均使用悲观锁,以实现事务隔离(或数据库软件需要的某些操作,如更改库属性)。 注意MVCC机制是解决读-写冲突,从而尽量减少锁的使用,并不是不使用锁或者替代了锁的使用。(写-写冲突还是需要依赖锁) 以InnoDB的MVCC机制为例,它是通过保存数据的快照形成版本链来实现
阅读全文
posted @ 2022-02-23 11:45
Cheung-10
摘要:参考博客:https://blog.csdn.net/as02446418/article/details/47913387 缓存的作用: 对于读操作,将热点数据放在内存中,提高响应速度,减少对低速设备的访问。 对于写操作,将数据放在缓冲区(一般为磁盘块大小的倍数),缓冲区满后再写入磁盘,减少访问数
阅读全文
posted @ 2022-02-21 16:13
Cheung-10
摘要:参考博客:https://www.cnblogs.com/xuwc/p/13873611.html 1.MVCC简述 数据库并发操作问题 设想对一个数据库进行并发操作,可能产生以下三种情况: 读-读,没有任何冲突,无需引入额外机制; 读-写,可能产生事务隔离问题,如脏读、不可重复读、幻读问题; 写-
阅读全文
posted @ 2021-10-25 21:33
Cheung-10
摘要:1. 数据持久化的步骤 一次完整的数据从客户端到达服务端磁盘的过程如下: a. 客户端执行向服务端发送数据的写操作(数据保存在客户端内存中,忽略拷贝时经过内核和网卡缓存/缓冲,因为情况可能不完全相同) b. redis服务器接受到数据(数据被redis接收并保存在内存用户空间中,此处忽略网卡和soc
阅读全文
posted @ 2021-10-25 17:45
Cheung-10
摘要:一个良好的数据库系统,其事务应当具备以下特性: 原子性、一致性、隔离性、持久性。 1.可能产生的问题: 若多个事务对同一个数据进行更新或查询,会产生:脏写、脏读、不可重复读、幻读四种问题 1.脏写 假设两个事务A和B准备对同一数据进行写。 A在检查数据无误后进入写如数据代码,此时线程切换至B,B将目
阅读全文
posted @ 2021-10-05 16:15
Cheung-10