2016-08-09 11 views
1

Angenommen, ich habe die folgende TabelleMYSQL einfügen interne Arbeit

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

Kann jemand mir die genauen Schritte erklären, dass MYSQL-Server intern ausgeführt, wenn ich einen Eintrag von einem Client einfügen wie diese

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

Zum Beispiel: (Parse-Abfrage - Berechtigungen überprüfen - ........ - usw.)

Ich möchte die genaue Arbeit, die MySQL-Server tun, von dem Moment an, ich sehe nd die Abfrage vom Client bis zu dem Zeitpunkt, an dem die Daten erfolgreich gespeichert wurden und alles in Ordnung ist.

Edit:

Ich möchte die Schritte in den beiden Speicher-Engines wissen: MYISAM - InnoDB

Dank

+1

Wenn Sie dies aus reinem Interesse wissen wollen, warum lesen Sie nicht den Quellcode? Wenn es einen anderen Grund dafür gibt - warum erklärst du nicht das wahre Problem, das du hast? – Mjh

Antwort

3

Was Sie fordern ist der Quellcode. Es ist hier https://github.com/mysql/mysql-server

Nach ein paar Erläuterungen, hier ist eine (sehr minimale) Idee von dem, was MySQL (oder eine andere Datenbank) über das Speichern eines Wertes in eine Datei hinaus tun muss. Eine (MySQL) -Datenbank muss ACID-Transaktionen haben und muss daher viele starke Garantien dafür geben, dass eine Datei dies nicht tut.

Es muss sicherstellen:

  • Atomicity
  • Konsistenz
  • Isolation
  • Haltbarkeit

Ferner ist in den meisten praktischen Fällen ist es mindestens ein Index halten muss, die eine Datei nicht.

ACID und Index-Wartung sind die Arbeit, die mehr Zeit benötigt als das Anhängen an eine flache Datei.

+2

Ah, also wollen Sie nicht, was Sie gefragt haben, das ist "die genaue Arbeit, die MYSQL-Server von dem Moment an tun, wenn ich die Abfrage vom Client an den Moment sende, wenn die Daten erfolgreich gespeichert werden". – z5h

+0

@johnsamir - im Grunde wollen Sie jemanden, der kostenlos für Sie arbeitet, ist das richtig? – Mjh

+0

Ich möchte nur herausfinden, warum das Einfügen von Daten in MYSQL DB relativ lange dauert, als diese Daten in eine reguläre Binärdatei einzufügen. Sorry für Unvollständigkeit in meiner Frage. –