Heim >Datenbank >MySQL-Tutorial >Analyse nach dem Prinzip der Mycat-Unterdatenbank und -Tabelle

Analyse nach dem Prinzip der Mycat-Unterdatenbank und -Tabelle

藏色散人
藏色散人Original
2019-06-15 14:49:289386Durchsuche

Analyse nach dem Prinzip der Mycat-Unterdatenbank und -Tabelle

MyCat ist ein verteiltes Open-Source-Datenbanksystem und ein Server, der das MySQL-Protokoll implementiert. Front-End-Benutzer können es mithilfe eines MySQL-Clients als Datenbankagent betrachten Tools und Befehlszeilenzugriff, und sein Backend kann das native MySQL-Protokoll verwenden, um mit mehreren MySQL-Servern zu kommunizieren, und kann auch das JDBC-Protokoll verwenden, um mit den meisten gängigen Datenbankservern zu kommunizieren a groß Die Tabelle ist horizontal in N kleine Tabellen unterteilt und wird auf dem Back-End-MySQL-Server oder anderen Datenbanken gespeichert.

Mycat kann Lese-/Schreibtrennung, Tabelle und Datenbank realisieren

Master-Slave-Replikation ist in MySQL integriert~

Über den Sharding-Modulo-Algorithmus: Modulo basierend auf der ID Basierend auf der Anzahl der Datenbankcluster (oder der Anzahl der Tabellen, eine Tabelle in Mycat entspricht einer Bibliothek)

Verwenden Sie die MyCat-Tabellen- und Datenbankprinzipanalyse

Die Routing-Ergebnisse in Mycat werden durch das Shard-Feld und die Shard-Methode bestimmt. Wenn die Abfragebedingung ein ID-Feld enthält, wird die Abfrage auf einen bestimmten Shard übertragen. Wenn Sie ein Feld ohne Fragmentierung abfragen, werden alle Datenbanken abgefragt und die Ergebnisse werden gekapselt und an den Client gesendet.

Ändern Sie die Protokollebene /mycat/conf/log4j2.xml zum Debuggen

Zum Beispiel:

In Abfrage

select * from user_info

Senden Sie drei Eine DB-Anfrage

Wenn die Abfrage bedingt ist (ohne Bedingungen)

wird konvertiert in:

select * from db1.user_info
select * from db2.user_info
select * from db3.user_info

Schließlich wird die Ergebnismenge von mycat gekapselt und an die zurückgegeben Kundenende

Wenn Sie hinzufügen, wo id = 1 ist, konvertiert mycat unter solchen Bedingungen 1%3=1 auf db2! Konvertieren Sie, um * aus db2.user_info auszuwählen, wobei id = 1 ist. Wenn die Abfrage Sharding ist, ist sie sehr effizient. Senden Sie einfach eins und es wird erledigt

Wenn es sich nicht um ein Fragmentfeld handelt, werden drei gesendet! Die Effizienz ist sehr gering

Zum Beispiel sendet name = 'jack' drei Abfragen an jede Datenbank entsprechend den Bedingungen, um die Ergebnisse zurückzugeben

tailf -200f mycat.log: Führen Sie die Ansicht

in Echtzeit durch und fragen Sie schnell auf einen Blick ab

Achten Sie auf die Paging-Abfrage:

select * from user_info limit 0,2

bis zum Ende Um welchen Daten-Shard handelt es sich?

Senden Sie drei Auswahlanfragen an drei Bibliotheken, um drei Paare mit jeweils sechs Ergebnissen zu erhalten.

Wählen Sie zufällig ein Paar aus und geben Sie es an den Kunden zurück.

Wenn hinzugefügt Wie sieht es mit den Sortierbedingungen aus?

 select * from user_info order by id  limit 0,2   (相当于取出最大的两条数据)

Senden Sie zuerst drei Auswahlen, von denen jede die größten zwei sind, und senden Sie sie dann zur umfassenden Auswahl an mycat zurück und senden Sie die größten zwei an den Kunden zurück

Wenn es

 select * from user_info   limit 0,3

ist. Was bei jeder Änderung der Anfrage zurückgegeben wird, ist zufällig!

db1 nimmt zwei zufällige von db2 und db3

Das obige ist der detaillierte Inhalt vonAnalyse nach dem Prinzip der Mycat-Unterdatenbank und -Tabelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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