MYSQL插入内部工作

时间:2016-08-09 12:58:07

标签: mysql

假设我有下表

create table MyTable
(
    id int unsigned auto_increment primary key,
    data varchar(4) not null
);

任何人都可以向我解释当我从这样的客户端插入条目时MYSQL服务器内部执行的确切步骤

insert into MyTable (data) values ("ABCD");

例如: (解析查询 - 检查权限 - ........ - 等)

我想知道MYSQL服务器从我从客户端发送查询到成功存储数据的那一刻所做的确切工作,并且每件事都没问题。

编辑:

我想知道两个存储引擎中的步骤:MYISAM - InnoDB

由于

1 个答案:

答案 0 :(得分:3)

您要求的是源代码。 它在这里https://github.com/mysql/mysql-server

经过一些澄清,这里有一个(非常小的)想法,即MySQL(或其他数据库)除了将值存储到文件之外必须做什么。 (MySQL)数据库必须具有ACID事务,因此必须做出许多强有力的保证,即文件不能。

必须确保:

  • 原子性
  • 一致性
  • 分离
  • 耐久性

此外,在大多数实际情况下,它必须至少保留一个索引,而文件则不能。

ACID和索引维护是完成的工作,除了附加到平面文件外需要时间。