逻辑图三层
第一层:客户端和服务器
第二层:查询解析,分析,优化,缓存以及所有内置函数,所有夸存储引擎的功能都在这一层实现:存储过程和触发器
第三层:存储引擎
每个客户端连接在服务器都有一个线程
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):事务提交后, 所做的修改会永久保存到数据库中
- 111
- 日记
- 工具11
- 20200723
- 20200724
- 20201019
- 更多阅读
- 回收站
- kafka 消费失败和重复消费问题
- ABC
- 20200127
- MySQL从删库到跑路
- PHP从放弃到入门
- help
- 我的日志
- 博客验证码
- 项目版本管理
- C++ Json序列化
- 20190425
- 图片
- 关键字
- 链接
- 分布式, 分库, 分表
- 游戏开发
- goLand 编辑器
- 区块链
- A-计划
- B-计划
- gin框架
- 锁
- 力扣-答题
- 数据库
- mysql 索引优化
- 挖矿
- 分布式锁
- 跨域问题
- kafka
- 长连接
- 面向对象 面向过程 函数式编程
- websocket
- 其它问题
- zeroMq
- 工具
- linux - systemctl
- gitbook 部署
- Ubantu 基础配置
- 备注服务
- 更换身份证(身份证到期了)
- 资源05
- 备注服务2
- 分布式
- TODO
- 资料准备
- 文章阅读
- mysql 高可用
- 日志1
- 日记2 - 区块链
- centos7 系统服务脚本
- copy_service 服务替换
- go kafka 孤人自嘲 - 偏移量 - kafka
- go vendor
- golang 显示git工具栏
- 图片资源
- 资讯01
- 资源01
- 资源02
- 资源03-数据库
- 资源04
- php历史数据
- golang 数据
- 文件1
- 文件2
- 文件3
- 文件4
- 文件5
- 文件6
- 文件7
- 文件8
- 文件9
- 文件10
- Flutter
- 管理后台系统
- 重装系统