Heim Datenbank MySQL-Tutorial Mysql源码学习――八度空间_MySQL

Mysql源码学习――八度空间_MySQL

Jun 01, 2016 pm 01:44 PM
学习 模块

bitsCN.com

 

学习完词法分析和语法分析后,开始进入Mysql源码的正式学习之旅了。这么多模块,肿么入手呢?!还好从网上搜到了一个模块划分,以后就尽可能根据这个模块划分一步一步的跟踪源码,揭开Mysql的面纱。

Mysql源码学习――八度空间_MySQL <script></script>

 

 

      我们从上至下来看各个模块的划分,首先客户端发送请求与服务器连接,通过connection manager模块,连接管理模块会调用Thread Manager模块,即线程管理模块,这里会为一个连接创建一个新的线程,专门为这个连接服务,这就保证了每个连接都有一个独立的线程为之工作,当然连接数一般也会有个限制,不然无限制的创建新的线程,操作系统也顶不住啊。接着进入了User Module,用户模块,这个模块应该是身份识别认证阶段,说白了就是检查用户名密码,当然应该还包括权限检查(只有自主访问控制,Mysql不像Oracle,不支持role,更不用说label了。这就是简约而不简单吧,^_^)。

 

      上面的三个模块就是登录过程中必须经历的阶段。connection manager为客户端和服务器创建连接,thread manager为新建的连接分配一个独立的线程,user Module进行身份认证。oh yeah~~

 

      接着进入Commander Dispatcher模块,命令分发模块,大概就是一个switch case的过程,根据不同的命令,进行不同的操作。这个模块又会间接关联到Query Cache模块和Logging Module,即查询缓存模块和日志模块。Query Cache模块个人感觉至少包含结果集缓存模块,至于有木有执行计划缓存,这个就不清楚了,还需要进入源码慢慢看来。Logging Module就是传说中的日志了,日志包括redo和undo两方面吧,日志系统是一个database必备的,是实现事务特性的重要手段,而事务便是database和file system的根本区别,不要小瞧了Logging Module啊!!

 

      命令分发模块,根据命令的性质,将命令分给不同的子模块。SELECT分配给Optimizer即优化模块,一条select语句最重要的就是执行计划了,一个好的执行计划比一个坏的执行计划不知道要快多少倍,这就是为什么我们要建立索引,其实在经常查询的列上建立二级索引,就是为了改变执行计划,让执行计划可以选择二级索引,而抛弃聚簇索引(当然不是完全抛弃,聚簇索引是根本)。UPDATE、INSERT、DELETE交给Table Modification Module,不看也知道,这个模块主要是处理数据更新了(这里所说的更新是指数据的改变,即UID)。Repairs分配给了Table Maintenance Module,字面意义是说表维护模块,我OUT了,默认表坏了,支持修复?是何种坏了?不太了解啊…。Replication分配给了Replication Module,就是复制模块。最后一个是Status分配给了Status Reporting Module,这个我貌似接触过,是不是所谓的那些动态试图?比如查看系统当前状态下的锁资源的占用情况等,这个模块应该是性能分析者居家旅行必备的模块吧,通过这个模块可能很快找到系统性能的瓶颈。

 

      上面的模块又统一走到Access Control Module,访问控制模块啊,原来上面所说的User Module不包含访问控制…,这个访问控制就是简单的DAC,即检查用户是否对要访问的对象具有增、删、改、查的权限。接着进入Table Manager模块,因为Mysql支持不同的存储引擎,而这个模块是个统一的模块,个人感觉这个应该是表的字典对象管理模块,即表的一些元数据,比如这个表包含哪些列啊,各个列的类型,表的创建者,创建日期,表的存储引擎之类的信息。最下面是Abstract Storage Engine Module,即抽象存储引擎模块,Mysql的保持这么多存储引擎同时在服务器中,是通过一个handler抽象类实现的(不知道有木有抽象类的概念,小弟C++、JAVA丢了很久了…),每个存储引擎按照规定的接口,实现一个具体的handler类,然后再调用的时候,根据上面的Table Manager模块中的存储引擎的信息,选择对应的handler类进行相应表的物理操作。

 

      看了这个模块图,感觉思路清晰了很多。下面就一步一步的学习每个模块,当然这些模块之间也是一个执行流程顺序执行的过程。今天就写到这了,下次开始学习第一个模块:Connection Manager

 

      PS. 貌似最近没这么忙了,加班加了好几个月终于算是稍微轻松了一点。以后把更多的业余时间放在读书学习上。

 

      PS again. 每天下班脑子都一锅粥了,回来写点博客权当放松啦,标题的八度空间是JAY的专辑名啦,借此来比喻Mysql的各个模块^_^

 


摘自 心中无码 bitsCN.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

WLAN-Erweiterungsmodul ist gestoppt [Fix] WLAN-Erweiterungsmodul ist gestoppt [Fix] Feb 19, 2024 pm 02:18 PM

Wenn es ein Problem mit dem WLAN-Erweiterungsmodul Ihres Windows-Computers gibt, kann dies dazu führen, dass Sie nicht mehr mit dem Internet verbunden sind. Diese Situation ist oft frustrierend, aber glücklicherweise enthält dieser Artikel einige einfache Vorschläge, die Ihnen helfen können, dieses Problem zu lösen und Ihre drahtlose Verbindung wieder ordnungsgemäß funktionieren zu lassen. Behebung, dass das WLAN-Erweiterbarkeitsmodul nicht mehr funktioniert Wenn das WLAN-Erweiterbarkeitsmodul auf Ihrem Windows-Computer nicht mehr funktioniert, befolgen Sie diese Vorschläge, um das Problem zu beheben: Führen Sie die Netzwerk- und Internet-Fehlerbehebung aus, um drahtlose Netzwerkverbindungen zu deaktivieren und wieder zu aktivieren. Starten Sie den WLAN-Autokonfigurationsdienst neu. Ändern Sie die Energieoptionen. Ändern Erweiterte Energieeinstellungen Netzwerkadaptertreiber neu installieren Einige Netzwerkbefehle ausführen Schauen wir uns das nun im Detail an

Das WLAN-Erweiterungsmodul kann nicht gestartet werden Das WLAN-Erweiterungsmodul kann nicht gestartet werden Feb 19, 2024 pm 05:09 PM

In diesem Artikel werden Methoden zur Behebung des Ereignisses ID10000 beschrieben, das darauf hinweist, dass das WLAN-Erweiterungsmodul nicht gestartet werden kann. Dieser Fehler kann im Ereignisprotokoll des Windows 11/10-PCs erscheinen. Das WLAN-Erweiterbarkeitsmodul ist eine Komponente von Windows, die es unabhängigen Hardwareanbietern (IHVs) und unabhängigen Softwareanbietern (ISVs) ermöglicht, Benutzern angepasste Features und Funktionen für drahtlose Netzwerke bereitzustellen. Es erweitert die Funktionalität nativer Windows-Netzwerkkomponenten durch Hinzufügen von Windows-Standardfunktionen. Das WLAN-Erweiterungsmodul wird im Rahmen der Initialisierung gestartet, wenn das Betriebssystem Netzwerkkomponenten lädt. Wenn beim WLAN-Erweiterungsmodul ein Problem auftritt und es nicht gestartet werden kann, wird möglicherweise eine Fehlermeldung im Protokoll der Ereignisanzeige angezeigt.

Erfahren Sie, wie Sie pip vollständig deinstallieren und Python effizienter nutzen Erfahren Sie, wie Sie pip vollständig deinstallieren und Python effizienter nutzen Jan 16, 2024 am 09:01 AM

Keine Notwendigkeit mehr für Pip? Kommen Sie und lernen Sie, wie Sie Pip effektiv deinstallieren! Einführung: pip ist eines der Paketverwaltungstools von Python, mit dem Python-Pakete einfach installiert, aktualisiert und deinstalliert werden können. Manchmal müssen wir jedoch pip möglicherweise deinstallieren, vielleicht weil wir ein anderes Paketverwaltungstool verwenden möchten oder weil wir die Python-Umgebung vollständig löschen müssen. In diesem Artikel wird erläutert, wie Sie Pip effizient deinstallieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Methoden zum Deinstallieren von Pip Im Folgenden werden zwei gängige Methoden zum Deinstallieren von Pip vorgestellt.

Ein tiefer Einblick in die Farbkarte von Matplotlib Ein tiefer Einblick in die Farbkarte von Matplotlib Jan 09, 2024 pm 03:51 PM

Um mehr über die Matplotlib-Farbtabelle zu erfahren, benötigen Sie spezifische Codebeispiele. 1. Einführung Matplotlib ist eine leistungsstarke Python-Zeichenbibliothek. Sie bietet einen umfangreichen Satz an Zeichenfunktionen und -werkzeugen, mit denen verschiedene Arten von Diagrammen erstellt werden können. Die Farbkarte (Colormap) ist ein wichtiges Konzept in Matplotlib, das das Farbschema des Diagramms bestimmt. Eine eingehende Untersuchung der Matplotlib-Farbtabelle wird uns helfen, die Zeichenfunktionen von Matplotlib besser zu beherrschen und das Zeichnen komfortabler zu gestalten.

Die Attraktivität der C-Sprache enthüllen: Das Potenzial von Programmierern aufdecken Die Attraktivität der C-Sprache enthüllen: Das Potenzial von Programmierern aufdecken Feb 24, 2024 pm 11:21 PM

Der Reiz des Erlernens der C-Sprache: Das Potenzial von Programmierern freisetzen Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Computerprogrammierung zu einem Bereich geworden, der viel Aufmerksamkeit erregt hat. Unter vielen Programmiersprachen war die Sprache C schon immer bei Programmierern beliebt. Seine Einfachheit, Effizienz und breite Anwendung machen das Erlernen der C-Sprache für viele Menschen zum ersten Schritt, um in den Bereich der Programmierung einzusteigen. In diesem Artikel geht es um den Reiz des Erlernens der C-Sprache und darum, wie man das Potenzial von Programmierern durch das Erlernen der C-Sprache freisetzt. Der Reiz des Erlernens der C-Sprache liegt zunächst einmal in ihrer Einfachheit. Im Vergleich zu anderen Programmiersprachen C-Sprache

Erste Schritte mit Pygame: Umfassendes Installations- und Konfigurations-Tutorial Erste Schritte mit Pygame: Umfassendes Installations- und Konfigurations-Tutorial Feb 19, 2024 pm 10:10 PM

Lernen Sie Pygame von Grund auf: Komplettes Installations- und Konfigurations-Tutorial, spezifische Codebeispiele erforderlich. Einführung: Pygame ist eine Open-Source-Spieleentwicklungsbibliothek, die mit der Programmiersprache Python entwickelt wurde. Sie bietet eine Fülle von Funktionen und Tools, mit denen Entwickler problemlos eine Vielzahl von Typen erstellen können des Spiels. Dieser Artikel hilft Ihnen, Pygame von Grund auf zu erlernen und bietet ein vollständiges Installations- und Konfigurations-Tutorial sowie spezifische Codebeispiele, um Ihnen einen schnellen Einstieg zu erleichtern. Teil eins: Python und Pygame installieren Stellen Sie zunächst sicher, dass Sie dies getan haben

Lassen Sie uns gemeinsam lernen, wie Sie die Stammzahl in Word eingeben Lassen Sie uns gemeinsam lernen, wie Sie die Stammzahl in Word eingeben Mar 19, 2024 pm 08:52 PM

Beim Bearbeiten von Textinhalten in Word müssen Sie manchmal Formelsymbole eingeben. Manche Leute wissen nicht, wie man die Stammzahl in Word eingibt, also habe ich den Redakteur gebeten, mit meinen Freunden ein Tutorial zur Eingabe der Stammzahl in Word zu teilen. Ich hoffe, es hilft meinen Freunden. Öffnen Sie zunächst die Word-Software auf Ihrem Computer, öffnen Sie dann die Datei, die Sie bearbeiten möchten, und bewegen Sie den Cursor an die Stelle, an der Sie das Stammzeichen einfügen müssen, siehe Beispielbild unten. 2. Wählen Sie [Einfügen] und dann im Symbol [Formel]. Wie im roten Kreis im Bild unten gezeigt: 3. Wählen Sie dann unten [Neue Formel einfügen]. Wie im roten Kreis im Bild unten gezeigt: 4. Wählen Sie [Radikal] und dann das entsprechende Radikal. Wie im roten Kreis im Bild unten gezeigt:

Ausführliche Erklärung der Funktionsweise von Ansible Ausführliche Erklärung der Funktionsweise von Ansible Feb 18, 2024 pm 05:40 PM

Das Funktionsprinzip von Ansible kann aus der obigen Abbildung verstanden werden: Die Verwaltungsseite unterstützt drei Methoden: Lokal, SSH und Zeromq, um eine Verbindung zur verwalteten Seite herzustellen. Dieser Teil entspricht der Verbindung Im obigen Architekturdiagramm können Sie den Anwendungstyp HostInventory (Hostliste) verwenden, um entsprechende Vorgänge über verschiedene Module zu implementieren und einen einzelnen Befehl auszuführen -hoc; Der Verwaltungsknoten kann eine Reihe von Aufgaben über Playbooks implementieren, z. B. die Installation und Bereitstellung von Webdiensten, die Stapelsicherung von Datenbankservern usw. Wir können Playbooks einfach so verstehen, wie das System vergeht

See all articles