/images/avatar.png

Schaepher's Blog

MySQL 自增主键

原文:

MySQL 自增主键
https://schaepher.github.io/2020/04/28/mysql-auto-inc/

以下仅考虑 InnoDB 存储引擎。

自增主键有两个性质需要考虑:

  • 单调性
    每次插入一条数据,其 ID 都是比上一条插入的数据的 ID 大,就算上一条数据被删除。
  • 连续性
    插入成功时,其数据的 ID 和前一次插入成功时数据的 ID 相邻。

自增主键的单调性

为何会有单调性的问题?

高内聚与低耦合

面向对象设计需要尽可能地符合高内聚与低耦合。它们的视角分为模块内部(内聚)和模块之间(耦合)。

模块内部各元素应紧密结合,一个模块只做一件事。

模块之间应该尽量独立,不直接产生依赖。

HTTP 三次握手与四次挥手

可以先按照较为理想情况学习。学完后在看待握手和挥手的问题时,要假设每一个消息都可能丢失。

另外握手要特别注意服务端为连接分配资源的问题。

三次握手

  1. 客户端:发起连接请求

CDN 客户成本分析

这里计算的是硬件成本,即 IDC 成本。

CDN 运营商自建或者找其他运营商租用 IDC。CDN 厂商需要根据 IDC 的使用情况来计费,这是 CDN 的成本。

IDC 的计费方式分为两种:

HTTPS 证书

在可靠传输的传输层协议 TCP 基础上,为 TCP 传输的有效载荷定义人类可读的文本的规则,得到了 HTTP。这些 HTTP 的内容没有被加密,因而可以被任何中间设备看到。为了保护数据的安全,在将 HTTP 数据放入 TCP 之前,使用 SSL/TLS 加密 HTTP 数据,就得到了 HTTPS。

各种锁

并发资源争抢就会涉及到锁。锁的种类有很多,如果不分类容易搞混。

以下涉及公平锁/非公平锁、乐观锁/悲观锁、独享锁/共享锁、互斥锁、读写锁、可重入锁(递归锁)/不可重入锁、自旋锁、自适应锁、偏向锁(意向锁)/轻量级锁/重量级锁、分段锁。