2016-08-09 15 views
1

は、私は、次の表があるとしMYSQL挿入内部作業

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

私はこの

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

のようなクライアントからのエントリを挿入すると、MySQLサーバが内部で実行されることを誰も私には正確な手順を説明することができます例: (解析クエリ - チェック特権 - ........ - など)

私は、MySQLサーバが行う作業を正確に知りたいと思っています。クライアントからの問合せを、データが正常に保管され、すべてのものが正常である瞬間まで検索します。

編集:

私は2つのストレージエンジンの手順を知りたい:MYISAM - InnoDBの

おかげ

+1

純粋な興味のためにこれを知りたければ、なぜソースコードを読んでみませんか?この背後に別の理由がある場合、実際の問題を説明するのはなぜですか? – Mjh

答えて

3

何を求めていることは、ソースコードです。 ここにあります。https://github.com/mysql/mysql-server

いくつかの説明の後で、MySQL(または他のデータベース)がファイルに値を格納する以外に何をしなければならないかについての(最小限の)考え方があります。 (MySQL)データベースにはACIDトランザクションが必要です。したがって、ファイルには多くの強力な保証が必要です。

それは確認する必要があります。

  • 不可分
  • 一貫
  • 分離
  • 耐久性

さらに、それは少なくとも一つの指標を維持しなければならない最も実用的な例では、ファイルをではない。

ACIDとインデックスメンテナンスは、フラットファイルに追加するよりも時間がかかる作業です。

+2

ああ、頼んだことは嫌です。つまり、「クライアントからのクエリをデータが正常に格納された瞬間までにMYSQLサーバが行う正確な作業」です。 – z5h

+0

@ johnsamir - 基本的に誰かがあなたのために無料で仕事をして欲しいのですが、それは間違いありませんか? – Mjh

+0

私は、MYSQL DBにデータを挿入するのに、このデータを通常のバイナリファイルに挿入するよりも時間がかかります。私の質問で不完全で申し訳ありません。 –