ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
逻辑图三层 第一层:客户端和服务器 第二层:查询解析,分析,优化,缓存以及所有内置函数,所有夸存储引擎的功能都在这一层实现:存储过程和触发器 第三层:存储引擎 每个客户端连接在服务器都有一个线程 MySQL5.5提供线程池, 可以使用池中少量的线程服务大量的连接 存储引擎对于优化查询有影响 事务日记 在提交前保存在日记中 MySQL锁 表锁, 行级锁, 共享锁, 排它锁,| |||| 悲观锁, 乐观锁 间隙锁 MVCC(MySQL的多版本并发控制): https://blog.csdn.net/XxieYyuHhui/article/details/78521997 InnoDB和XtraDB存储引擎通过多版本并发控制解决幻读的问题 MVCC策略支持高并发, 并通过间隙锁防止幻读 保存二个额外的版本号,使大多数读操作都可以不用加锁。(需要额外的存储空间) 在同一事务中使用多种存储引擎是不可靠的(非事务型的表不会回滚) InnoDB 聚簇索引 MyIsAM 不支持事务和行级锁 , (读多写少,表在创建并导入数据后不再修改,可以使用压缩表, 减少空间占用和IO开销) (不需要事务, 只需要select 和 insert) 死循环没有调度点,被饿死,见上面的讨论 goroutin里不能panic 因为协程里面发生panic会让整个进程crash 聚簇索引的优化 mvcc为用户提供快照读, 一致非锁定读,也可以称为快照读,其实就是普通的读取即普通SELECT语句 三大范式:不要冗余字段, 一对多的关系分表放, 属性都跟主键有直接关系而不是间接关系 事务的四大特征 原子性(atomicity) : 整个事务中的所有操作视为一个整体, 要么全部成功, 要么全部失败回滚 一致性(consistency): 在没有提交前, 部分执行成功的语句不会影响外部 隔离性(isolation): 一个事务所做的修改在提交前, 对其它事务是不可见的 持久性(durability):事务提交后, 所做的修改会永久保存到数据库中