MySQL 自增主键
原文:
MySQL 自增主键
https://schaepher.github.io/2020/04/28/mysql-auto-inc/
以下仅考虑 InnoDB 存储引擎。
自增主键有两个性质需要考虑:
- 单调性
每次插入一条数据,其 ID 都是比上一条插入的数据的 ID 大,就算上一条数据被删除。 - 连续性
插入成功时,其数据的 ID 和前一次插入成功时数据的 ID 相邻。
自增主键的单调性
为何会有单调性的问题?
原文:
MySQL 自增主键
https://schaepher.github.io/2020/04/28/mysql-auto-inc/
以下仅考虑 InnoDB 存储引擎。
自增主键有两个性质需要考虑:
为何会有单调性的问题?
面向对象设计需要尽可能地符合高内聚与低耦合。它们的视角分为模块内部(内聚)和模块之间(耦合)。
模块内部各元素应紧密结合,一个模块只做一件事。
模块之间应该尽量独立,不直接产生依赖。
可以先按照较为理想情况学习。学完后在看待握手和挥手的问题时,要假设每一个消息都可能丢失。
另外握手要特别注意服务端为连接分配资源的问题。
客户端:发起连接请求
这里计算的是硬件成本,即 IDC 成本。
CDN 运营商自建或者找其他运营商租用 IDC。CDN 厂商需要根据 IDC 的使用情况来计费,这是 CDN 的成本。
IDC 的计费方式分为两种:
在可靠传输的传输层协议 TCP 基础上,为 TCP 传输的有效载荷定义人类可读的文本的规则,得到了 HTTP。这些 HTTP 的内容没有被加密,因而可以被任何中间设备看到。为了保护数据的安全,在将 HTTP 数据放入 TCP 之前,使用 SSL/TLS 加密 HTTP 数据,就得到了 HTTPS。
并发资源争抢就会涉及到锁。锁的种类有很多,如果不分类容易搞混。
以下涉及公平锁/非公平锁、乐观锁/悲观锁、独享锁/共享锁、互斥锁、读写锁、可重入锁(递归锁)/不可重入锁、自旋锁、自适应锁、偏向锁(意向锁)/轻量级锁/重量级锁、分段锁。