Heim >Datenbank >MySQL-Tutorial >Analysieren Sie den Startvorgang von MySQL
Eines Tages wollten zwei Leute, die den MySQL-Kernel nicht verstanden, etwas über den MySQL-Kernel-Code lernen, anstatt den -Code zu debuggen und nachzuschauen Zur Information, sie Das ist, wo Sie denken. Da ich den Kernel nicht verstehe, überprüfe ich ihn, während ich darüber nachdenke.
Der verwendete MySQL-Code ist 5.1.7 und die Debugging-Umgebung ist vs2003 unter der Windows-Plattform.
Bingxi: „Alex, wie wird Ihrer Meinung nach der Startvorgang von MySQL aussehen? Nehmen wir das Bankverhalten als Beispiel.“ Alex: „Nun, Bingxi. Die Bank ist geöffnet Heute Morgen wird die Umgebung vorbereitet und dann wird die Tür geöffnet, um Gäste willkommen zu heißen. Es wird eine han
dle_connections_socketsFunktion geben . Diese Funktion ist wie eine Wählmaschine. Es wird eine Nummer vergeben und dann wird die Geschäftsabwicklung durchgeführt. „Ah, hier gibt es zwei Möglichkeiten.“ , 1) Sobald der Benutzer kommt, wird ein Mitarbeiter mit der Bearbeitung beauftragt. , 2) Werfen Sie die eingeplanten Personen in die Arbeitswarteschlange und gehen Sie zum vorgesehenen Fenster, um den Service zu erhalten Laut Nummernrufmaschine eignet sich das erste Szenario für Situationen, in denen das Anfragevolumen groß und die Antwortgeschwindigkeit besonders schnell ist, aber auch die Zuweisung schwierig ist. Es wird eine Grenze geben, die sogenannte maximale Anzahl von Verbindungen. Diese Situation ist in der Internetbranche üblich. Dementsprechend ist der Lastbereich der Maschine besonders groß. Dies ist auch ein Nachteil, wenn man davon ausgeht, dass jedes Unternehmen komplex ist (Ressourcen verbrauchende SQL-Anweisungen). Gleichzeitig kann die Maschine dies nicht unterstützen. Diese Situation ist ein Transaktionsszenario zur Auswahl. Schauen wir uns weiterhin den folgenden Code an. Wenn wir den Thread
Cache
pthread_handler_t handle_connections_sockets(void *arg attribute((unused))) { …… while (!abort_loop) { select((int) max_used_connection,&readFDs,0,0,0) < 0) //有连接了则往下来执行,否则一直等待 …… accept(sock, my_reinterpret_cast(struct sockaddr *) (&cAddr),&length) //接受请求 …… create_new_thread(thd); } //abort_loop=1,则执行到这里进行推出。今天业务不处理了 }
Bingxi: „Nun, Lao Yang. Verstehen Sie, dass die Bank dem Kunden einen Servicemitarbeiter zuweist und den Kunden in diesem Zeitraum betreut hat? Darin befindet sich ein Codeausschnitt, auf den immer gewartet wird.“ Der Benutzer muss jedoch einen Befehl erteilen, genau wie eine Person, die 100 Yuan eingezahlt und immer wieder 1 Yuan abgehoben hat und vom Sicherheitsbeamten abgeführt wurde. >Alex: „Nun, holen Sie sich den Befehl und führen Sie ihn dann aus.“ . In der Funktion „dispatch_command“ wird die Antwort entsprechend unterschiedlicher Kundenwünsche verarbeitet, wie z. B. Kontoeröffnung, Geldeinzahlung etc.
>
Das obige ist der detaillierte Inhalt vonAnalysieren Sie den Startvorgang von MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!