Heim  >  Artikel  >  Datenbank  >  Big Data Learning Teil 2 MYSQL Advanced

Big Data Learning Teil 2 MYSQL Advanced

coldplay.xixi
coldplay.xixinach vorne
2021-02-01 09:33:501570Durchsuche

5.1 MyISAM 5.2 Innodb .2 Funktionen der Innodb-Speicher-Engine

Big Data Learning Teil 2 MYSQL Advanced5.2.3 Innodb-Statusprüfung

5.2.4 Anwendbare Szenarien5.2.4 (Erweitert) Was ist eine Sperre

  • 5.2.3.1 Was ist eine Sperre?
    • 5.2.3.2 Sperrtyp:
    • 5.2.3.3 Kompatibilitätsbeziehung zwischen Schreibsperre und Lesesperre (Kompatibilität für eine Zeile)
    • 5.2.3.4 Sperrgranularität:
      • 5.2.3.5 Blockierung und Deadlock
      • .
      • 5.3 CSV-Speicher-Engine
      • 5.3.1 Eigenschaften der CSV-Speicher-Engine
        • 5.3.2 Anwendbare Szenarien der CSV-Speicher-Engine
        • 5.4 Archiv-Speicher-Engine
        • 5.4.1 Eigenschaften der Dateisystemspeicherung
        • 5.4.2 Funktionen der Archivspeicher-Engine
      • 5.4.3 Nutzungsszenarien der Archivspeicher-Engine
    • 5.5 Speicherspeicher-Engine
      • 5.5.1 Speicherfunktionen des Dateisystems
      • 5.5.2 Funktionsmerkmale des Speichers
    • 5.5.3 Leicht verwirrende Konzepte in Speicher
    • 5.5.4 Nutzungsszenarien des Speichers
      • 5.6 Federated Storage Engine
      • 5.6.1 Funktionen von Federated
    • 5.6.2 Verwendung von Federated
    • 5.6.3 Federated Anwendbare Szenarien
      • 6 So wählen Sie die richtige Speicher-Engine aus
      • Fortsetzung des vorherigen Artikels
    • 5 MySQL-Architektur
      • Wählen wir für einen einfachen Überblick einige der am häufigsten verwendeten Speicher-Engines aus. Beachten Sie, dass die von ihnen verwendete Speicher-Engine verwendet wird MySQL hat einen direkten Einfluss auf die Leistung der Datenbank. Ich hoffe auch, dass Sie einige der Eigenschaften der Speicher-Engine sorgfältig verstehen, bevor Sie die Speicher-Engine verwenden.
      • 5.1 MyISAM
    MyISAM war die Standardspeicher-Engine vor MySQL5.5. Aus diesem Grund verwenden immer noch viele Server die MyISAM-Speicher-Engine. Gleichzeitig ist MyISAM derzeit die Speicher-Engine, die von vielen Systemtabellen und temporären Tabellen verwendet wird. Die hier erwähnte temporäre Tabelle ist nicht die Tabelle, die wir über create table erstellen Beim Sortieren, Gruppieren und anderen Vorgängen wird vom Abfrageoptimierer eine temporäre Tabelle erstellt.
  • Die MyISAM-Speicher-Engine besteht aus MYD und MYI ist die Erweiterung der Datendatei, und MYI ist die Erweiterung der Indexdatei. Diese Speicher-Engine speichert Tabellen in Datendateien und Indexdateien mit diesen beiden Erweiterungen.
  • Funktionen:

Parallelität und Sperrebene

MyISAM verwendet Sperren auf Tabellenebene, nicht auf Zeilenebene. Das bedeutet, dass Sie beim Ändern der Daten in der Tabelle die gesamte Tabelle sperren müssen, und auch gemeinsame Sperren gelten Beim Lesen von Tabellen zu allen Tabellen hinzugefügt. Hier können wir sehen, dass sich Lese- und Schreibvorgänge für Tabellen mit MyISAM als Engine gegenseitig ausschließen. Es ist ersichtlich, dass MyISAM bei gleichzeitigen Lese- und Schreibvorgängen nicht sehr gut ist. Wenn es sich nur um schreibgeschützte Vorgänge handelt, ist die Leistung im Hinblick auf die Parallelität nicht schlecht, da die gemeinsame Sperre die gemeinsame Sperre nicht blockiert.

Reparatur von Tabellenschäden MyISAM unterstützt die Überprüfung und Reparatur von MyISAM-Tabellen, die aufgrund eines unerwarteten Herunterfahrens beschädigt wurden. Bei der hier erwähnten Reparatur handelt es sich jedoch nicht um eine Datenwiederherstellung, da MyISAM keine Transaktionsspeicher-Engine ist und daher keine zugehörigen Protokolle für die Transaktionswiederherstellung benötigt Beachten Sie daher, dass die Wiederherstellung von MyISAM-Tabellen zu Datenverlust führen kann. Wir können die Tabelle über check table table name überprüfen und die Tabelle über repair table table name wiederherstellen.

Von MyISAM-Tabellen unterstützte IndextypenBig Data Learning Teil 2 MYSQL Advanced MyISAM unterstützt die Volltextindizierung und war die einzige offizielle Speicher-Engine, die vor MySQL5.7 die Volltextindizierung nativ unterstützte.

MyISAM-Tabelle unterstützt Datenkomprimierung

Wenn MyISAM eine große schreibgeschützte Tabelle darstellt, das heißt, nachdem die Tabelle erstellt und die Daten importiert wurden, werden keine Änderungen an der Tabelle vorgenommen, dann können wir die Tabelle komprimieren, um sie zu reduzieren Festplatten-E/A. Wir können den Befehl myisampack verwenden, um die Tabelle zu komprimieren. Durch die Komprimierung wird die Tabelle unabhängig komprimiert, sodass beim Lesen einer Datenzeile nicht die gesamte Tabelle dekomprimiert werden muss.

Einschränkungen:

create table创建出来的表,是指在排序、分组等操作中,当数量超过一定的大小之后,有查询优化器建立的临时表。
MyISAM存储引擎是由MYD和MYI组成,MYD是数据文件的扩展名,MYI是索引文件的扩展名,这个存储引擎是将表存储在以这两个为扩展名的数据文件和索引文件中。

特性:

  • 并发性与锁级别
    MyISAM使用的是表级锁,并不是行级锁,这也就意味着对表中的数据进行修改时,需要对整个表进行加锁,而在对表的读取时也对所有的表加共享锁,从这里我们可以看到,使用MyISAM做引擎的表读取和写入两种操作是互斥的。由此可以看到MyISAM对于读写的并发操作并不会很好。如果只对于只读取操作的话,就并发性而言,性能也还不错,因为共享锁不会阻塞共享锁。
  • 表损坏修复
    MyISAM支持由于任意意外关闭而损坏的MyISAM表,进行检查和修复操作,但是这里说的修复并不是数据的恢复,因为MyISAM并不是一种事务性的存储引擎,所以它不能进行事务恢复所需要的相关日志,所以要注意MyISAM表的恢复可能会造成数据的丢失。
    我们可以通过check table tablename对表进行检查,通过repair table tablename对表进行恢复。
  • MyISAM表支持的索引类型
    MyISAM支持全文索引,并且在mysql5.7版本之前唯一原生就支持全文索引的官方存储引擎。
  • MyISAM表支持数据压缩
    如果MyISAM表示一张很大的只读表,也就是在表创建完导入数据后,就不会对表进行任何修改操作了,那我们就可以对表进行压缩了,以减少磁盘I/O。 我们可以使用myisampack
  • Version

    Wenn Sie eine große Tabelle speichern, müssen Sie MAX_Rows und AVG_ROW_LENGTH ändern.

      Version > 256 TB
    • Anwendbare Szenarien:
    • Nicht-transaktionale Anwendungen

    Schreibgeschützte Anwendungen (Berichte und dergleichen)

      Räumliche Anwendungen
    • 5.2 Innodb
    • Innodb ist die Standardspeicher-Engine für MySQL 5.5 und spätere Versionen. Innodb ist eine Speicher-Engine für die Transaktionsspeicherung, was bedeutet, dass sie die Transaktionsverarbeitung unterstützt.
      Innodb verfügt über ein eigenes Konzept des Tabellenbereichs, und die Daten werden im Tabellenbereich gespeichert, der durch den Parameter innodb_file_per_table bestimmt wird. Wenn dieser Parameter ON ist, ist ein System Für jede Innodb-Tabelle wird eine Datei mit der Erweiterung ibd erstellt. Wenn dieser Parameter OFF ist, werden die Daten im gemeinsamen Tabellenbereich des Systems gespeichert >ibdataX, X stellt eine Zahl dar, die standardmäßig bei 1 beginnt. innodb_file_per_table这个参数来决定的,如果这个参数为ON,则会对每个Innodb表建立一个扩展名为ibd的系统文件,如果这个参数为OFF时,则会把数据存储到系统的共享表空间,也就是ibdataXX代表的时一个数字,默认从1开始。
      查看这个参数的命令为:
      show variables like 'innodb_file_per_table';
      修改这个参数的命令为:
      set global innodb_file_per_table=off;

      5.2.1 系统表空间和独立表空间要如何选择

      比较:

      系统表空间 独立表空间
      无法简单的收缩文件大小 可以通过optimize table命令收缩系统文件
      会产生IO瓶颈 可以同时向多个文件刷新数据

      建议:

      • 对Innodb使用独立表空间

      把原来存在于系统表空间中的表转移到独立表空间中的方法。
      步骤:

  1. 使用mysqldump导出所有数据库表数据
  2. 停止MySQL服务,修改参数,并删除Innodb相关文件
  3. 重启MySQL服务,重建Innodb系统表空间
  4. 重新导入数据

5.2.2 Innodb存储引擎的特性

  • Innodb是一种事务性存储引擎
  • 完全支持事务的ACID特性(之前介绍过的原子性,一致性等)
  • Redo Log 和 Undo Log
    Redo Log实现了事务的持久性,有两部分组成,其中一个是内存中的工作日志持久缓冲区,是由innodb_log_buffer_size决定它的大小,另一个是重构日志文件,也就是我们在文件系统中看到的ib_logflie的相关文件。Undo Log实现了事务的原子性,在事务失败时进行回滚操作。Redo Log是顺序读写的,Undo Log是随机读写的,如果可以的话可以将数据存储在固态硬盘中,以提高性能。
  • Innodb支持行级锁
    行级锁和表级锁是不一样的,行级锁的特点就是可以最大程度的支持并发,行级锁是由存储引擎层实现的。

5.2.3 Innodb状态检查

可以使用以下命令对Innodb状态进行检查:
show engine innodb status Der Befehl zum Anzeigen dieses Parameters lautet:

zeige Variablen wie „innodb_file_per_table“;

Der Befehl zum Ändern dieses Parameters lautet: set global innodb_file_per_table=off;

5.2.1 So wählen Sie zwischen Systemtabellenbereich und unabhängigem Tabellenbereich. Vergleich:

Systemtabellenbereich. Unabhängiger Tabellenbereich Sie können den Befehl Tabelle optimieren übergeben, um Systemdateien zu verkleinern.

  • führt zu E/A-Engpässen.
  • kann Daten in mehreren Dateien gleichzeitig aktualisieren. Empfehlung:

Verwenden Sie einen unabhängigen Tabellenbereich für Innodb

    Eine Methode zum Übertragen von Tabellen, die ursprünglich im Systemtabellenbereich vorhanden waren, in einen unabhängigen Tabellenbereich.
  • Schritte:
    Verwenden Sie mysqldump, um alle Datenbanktabellendaten zu exportieren.

    Stoppen Sie den MySQL-Dienst, ändern Sie Parameter und löschen Sie Innodb-bezogene Dateien.

    Starten Sie den MySQL-Dienst neu. Erstellen Sie den Innodb-Systemtabellenbereich neu Daten ol>5.2.2 Funktionen der Innodb-Speicher-EngineRedo Log und Undo Log Redo Log implementiert die Transaktionspersistenz und besteht aus zwei Teilen. Der eine ist der persistente Puffer des Arbeitsprotokolls im Speicher, dessen Größe durch innodb_log_buffer_size bestimmt wird, und der andere ist die rekonstruierte Protokolldatei, die wir im Dateisystem ausführen Dateien von ib_logflie gesehen in . Undo Log erkennt die Atomizität von Transaktionen und führt Rollback-Vorgänge durch, wenn Transaktionen fehlschlagen. Das Redo-Log wird nacheinander gelesen und geschrieben, und das Undo-Log wird nach dem Zufallsprinzip gelesen und geschrieben. Wenn möglich, können die Daten zur Verbesserung der Leistung auf einem Solid-State-Laufwerk gespeichert werden. Innodb unterstützt Sperren auf Zeilenebene. Sperren auf Zeilenebene unterscheiden sich. Das Merkmal von Sperren auf Zeilenebene besteht darin, dass sie die Parallelität weitgehend unterstützen können. Sperren auf Zeilenebene werden von der Speicher-Engine-Ebene implementiert . 5.2.3 Innodb-Statusprüfung für Großanwendungen Die meisten OLTP-Anwendungen, da Innodb nach der Version mysql5.7 bereits Volltextindizes und räumliche Funktionen unterstützt. 5.2.3.1 Was ist eine Sperre? Exklusive Sperre (auch Schreibsperre genannt)

    Innodb ist eine Transaktionsspeicher-Engine unterstützt vollständig die zuvor eingeführten ACID-Eigenschaften von Transaktionen (Atomizität, Konsistenz usw.)
    5.2.4 (Erweitert) Was ist eine Sperre
    Die Hauptfunktion von Sperren besteht darin, den gleichzeitigen Zugriff auf gemeinsam genutzte Ressourcen zu verwalten. Sperren werden verwendet, um eine Transaktionsisolation zu erreichen
    🎜5.2.3.3 Kompatibilitätsbeziehung zwischen Schreibsperre und Lesesperre (Kompatibilität für eine Zeile)🎜🎜🎜🎜🎜🎜🎜🎜🎜Schreibsperre🎜🎜Lesesperre🎜🎜🎜🎜 🎜 🎜Schreibsperre🎜🎜nicht kompatibel🎜🎜nicht kompatibel🎜🎜🎜🎜Lesesperre🎜🎜nicht kompatibel🎜🎜kompatibel🎜🎜🎜🎜

    In tatsächlichen Situationen können die Ergebnisse von den Ergebnissen in der obigen Tabelle abweichen, hauptsächlich weil der Sperrmechanismus in Innodb sehr komplex ist und es viele Sperren gibt, die sich auf das Endergebnis auswirken. 5.2.3.4 Sperrgranularität:

    Sperre auf Tabellenebene Irgendwann muss die Sperre in einer Transaktion warten, bis die Sperre einer anderen Transaktion freigegeben wird, und die von ihr belegten Ressourcen bilden einen Block.

    Deadlock: Deadlock bezieht sich auf eine Ausnahme, die auftritt, wenn zwei oder mehr Transaktionen die Ressourcen belegen, auf die die andere Partei während der Ausführung der Transaktion wartet. Wie aus der Definition hervorgeht, belegen mehrere blockierte Transaktionen die Ressourcen, auf die die blockierte Transaktion wartet, und ein Deadlock liegt vor, wenn mehrere blockierte Transaktionen die Ressourcen belegen, auf die die jeweils andere wartet.
  • 5.3 CSV-Speicher-Engine
Die CSV-Speicher-Engine kann CSV-Dateien als MySQL-Tabellendateien verarbeiten. Die Datenspeichermethode der CSV-Speicher-Engine ist sehr einzigartig Wenn wir die Tabelle in MyISAM oder Innodb speichern, können wir die Datendateien nicht direkt anzeigen, da diese beiden Dateien im Binärformat gespeichert sind, während die CSV-Speicher-Engine im Binärformat gespeichert ist. Das heißt, wir können die Datei über den Befehl anzeigen, z. B. mehr, oder den Befehl vi verwenden, um die Tabelle in der CSV-Speicher-Engine anzuzeigen und zu bearbeiten. Solange sie dem Format und den Anforderungen der CSV-Datei entspricht. Wir müssen uns keine Sorgen über beschädigte Daten machen.

Wenn wir die CSV-Speicher-Engine-Tabelle in MySQL erstellen, sollten wir die Dateien in den 3 Dateisystemen sehen können. Diese drei Dateinamen basieren alle auf dem Tabellennamen, haben jedoch jeweils die Suffixe csv, csm und frm. Die CSV-Datei ist die Datendatei in der CSV-Speicher-Engine. Die CSM-Datei speichert die Metadaten der Tabelle sowie den Tabellenstatus und das Datenvolumen. In der FRM-Datei werden Informationen zur Tabellenstruktur gespeichert.

5.3.1 Funktionen der CSV-Speicher-Engine


Die größte Funktion ist die Datenspeicherung im CSV-Format Jede Spalte in CSV ist durch , getrennt und der Inhalt des Textes ist eingeschlossen in doppelten Anführungszeichen, wie unten gezeigt: at Bildbeschreibung hier einfügen

Alle Spalten müssen ungleich NULL sein
Beim Erstellen einer Tabelle müssen alle Spalten ungleich NULL sein und können nicht als NULL-Werte gespeichert werden

Unterstützt keine Indizes Nicht für große Tabellen geeignet

Kann Datendateien direkt bearbeiten.
    Textdateiinhalt speichern. php.cn/upload/article/000/000/052/97f1b9714d3a2590f88181c0cce9ca8a-2.png" alt="Bildbeschreibung hier einfügen"/>
  • Bildbeschreibung hier einfügen
    ,来分隔的,并且文本的内容是以双引号来引起来的,如下图所示:
    Big Data Learning Teil 2 MYSQL Advanced
  • 所有列必须都是不能为NULL的
    在建表的时候所有的列都必须是非空的,不能存储为NULL的值
  • 不支持索引
    不适合大表,不适合在线处理
  • 可以对数据文件直接编辑
    保存文本文件内容

5.3.2 CSV存储引擎的适用场景

CSV存储引擎适合作为数据交换的中间表
Big Data Learning Teil 2 MYSQL Advanced
Big Data Learning Teil 2 MYSQL Advanced

5.4 Archive存储引擎

5.4.1 文件系统存储特点

Archive存储引擎会缓存所有的写,并且利用zlib对插入的行进行压缩,因此Archive存储引擎相对于MyISAM存储引擎的表更加节省磁盘I/O,对于同样数量级的数据,Archive存储引擎相对于MyISAM和Innodb更加节省存储空间。一个几T的Innodb的表存储在Archive存储引擎当中,可能只需要几百兆的存储空间。
Archive存储引擎的表的数据是以ARZ为后缀的一个文件,和其他引擎一样,也存在一个以frm为后缀的系统文件,用于存储表的结构信息。

5.4.2 Archive存储引擎的特点

  • 只支持insertselect
  • 5.4 Archivspeicher-Engine

5.4.1 Dateisystemspeicherfunktionen

Die Archivspeicher-Engine speichert alle Schreibvorgänge zwischen und verwendet zlib, um eingefügte Zeilen zu komprimieren. Daher spart die Archivspeicher-Engine Festplatten-E/A im Vergleich zu den Tabellen der MyISAM-Speicher-Engine. Bei Daten in derselben Größenordnung spart die Archivspeicher-Engine Festplatten-E/A im Vergleich zu MyISAM MyISAM-Tabellen sparen mehr Speicherplatz. Eine mehrere Terabyte große Innodb-Tabelle wird in der Archivspeicher-Engine gespeichert und benötigt möglicherweise nur einige hundert Megabyte Speicherplatz.

Die Tabellendaten der Archivspeicher-Engine sind eine Datei mit dem Suffix ARZ. Wie bei anderen Engines gibt es auch eine Systemdatei mit dem Suffix frm, die zum Speichern der Strukturinformationen der Tabelle verwendet wird. 5.4.2 Funktionen der Archiv-Speicher-Engine 5.4.3 Nutzungsszenarien der Archivspeicher-Engine

Szenario 1: Protokoll- und Datenerfassungsdaten Da das Archiv das Ändern und Löschen nicht unterstützt, ändert unser ORDB die Daten auf jeden Fall, bei einigen Lagertypanwendungen oder einigen speziellen Tabellen jedoch immer noch B. Protokollierungstabellen oder Datenerfassungstabellen. Da sie große Datenmengen sammeln müssen, ist die Archivspeicher-Engine besser geeignet. Da die Archivspeicher-Engine unter allen Engines über den kleinsten Speicherplatz verfügt, ist zu beachten, dass die Archivspeicher-Engine diese Daten auch in Datenerfassungs- oder Protokollierungsanwendungen nicht aktualisieren kann, z. B. beim Aufzeichnen von Protokollen oder wenn Sie die Daten in einer Datensammlung ändern Wenn Sie eine Anwendung verwenden, können Sie die Archivspeicher-Engine möglicherweise nicht verwenden.

5.5 Speicher-Engine

🎜5.5.1 Dateisystem-Speicherfunktionen🎜🎜

Die Speicher-Engine wird auch als HEAP-Speicher-Engine bezeichnet. Dies bedeutet, dass die Datentabelle gelöscht wird. Sobald der MySQL-Dienst neu gestartet wird, verschwinden alle Daten der Speicher-Engine, die Struktur bleibt jedoch bestehen bleibt erhalten, da beim Erstellen einer Tabelle unter der Speicherspeicher-Engine nur eine FRM-Systemdatei generiert wird, die zum Speichern der Tabellenstruktur verwendet wird. Aus diesem Grund gehen beim Neustart des MySQL-Servers Daten verloren, die Tabellenstruktur jedoch nicht.
Anhand der Dateispeichereigenschaften können wir erkennen, dass die E/A-Effizienz der Speicherspeicher-Engine viel höher ist als die von MyISAM, da nur der Index von MyISAM im Speicher gespeichert wird und die Daten vom Betriebssystem zwischengespeichert werden Während die Speicher-Engine Daten und Indizes im Speicher speichert, werfen wir einen Blick auf die Funktionen der Speicher-Engine.

5.5.2 Funktionsmerkmale von Memory Wenn Sie eine Bereichsabfrage durchführen, können Sie den HASH-Index nicht verwenden. Daher müssen wir beim Erstellen der Tabelle aufpassen. Wenn die Tabelle eine große Anzahl gleichwertiger Abfragen erfordert, verwenden Sie den HASH-Index und für Bereichsabfragen den BTree-Index. Verschiedene Indextypen können einen großen Einfluss auf die Leistung haben. Alle Felder haben eine feste Länge varchar(10) = char(10)

Dies erfordert, dass wir bei der Definition der Tabellenstruktur die Mindestanforderungen an die Feldlänge erfüllen, da sonst viel Speicher verschwendet wird.

Unterstützt keine großen Felder wie BLOG und TEXT
  • Speicher-Engine verwendet Sperren auf TabellenebeneDie maximale Größe wird durch den Parameter max_heap_table_size bestimmtDer Standardwert dieses Parameters beträgt nur 16 Megabyte, wenn wir speichern möchten Eine große Datenmenge in der Tabelle der Speicher-Engine muss geändert werden. Diese Parameteränderung hat keine Auswirkungen auf die vorhandene Tabelle der Speicher-Engine. Wenn Sie sie auf die vorhandene Tabelle anwenden müssen, müssen Sie dies tun Erstellen Sie die vorhandene Tabelle neu.
  • 5.5.3 Leicht verwechselbare Konzepte im Speicher
  • Speicher-Engine-Tabelle:
  • Kann in allen Systemen verwendet werden, es handelt sich nicht um eine temporäre Tabelle.
  • Temporäre Tabelle:
  • Es gibt zwei Arten von temporären Tabellen, die vom System verwendet werden, wenn der Abfrageoptimierer die Abfrage optimiert. Das System verwendet die temporäre Tabelle, wenn der Grenzwert überschritten wird Große BLOB- oder TEXT-Felder), verwenden Sie die temporäre MyISAM-Tabelle und verwenden Sie die Speichertabelle, ohne das Limit zu überschreiten.
  • Die andere ist eine temporäre Tabelle, die mit dem Befehl temporäre Tabelle erstellen erstellt wurde. Die erstellte Tabelle kann jede Speicher-Engine verwenden.
    Egal um welche Art temporäre Tabelle es sich handelt, sie ist nur intern sichtbar.

5.5.4 Speichernutzungsszenarien

Wird zum Nachschlagen oder Zuordnen von Tabellen verwendet, z. B. Postleitzahlen- und Regionskorrespondenztabellen.

Wird zum Speichern von Zwischentabellen verwendet, die während der Datenanalyse generiert wurden.

Wird zum Zwischenspeichern der Ergebnisse der periodischen Aggregation verwendet Datentabellecreate temporary table建立的临时表,建立的表可以使用任何存储引擎。
无论是哪种临时表,只对内部可见。

5.5.4 Memory的使用场景

  • 用于查找或者映射表,例如邮编和地区的对应表
  • 用于保存数据分析中产生的中间表
  • 用于缓存周期聚合数据的结果表

Memory数据易丢失,所以要求数据可再生。

5.6 Federated存储引擎

5.6.1 Federated的特点

  • 提供了访问远程MySQL服务器上表的方法
    由于Federated存储引擎只是在本地建立了到远程服务器的一个连接,所以可以说我们所要访问的表全部还是放在远程服务器上,在本地并不存储数据。每次访问Federated存储引擎表的时候,查询都会被发送到远程服务器上运行,并从远程的MySQL服务器上获取相关的数据。
  • 本地不存储数据,数据全部放到远程服务器上
  • 本地需要保存表结构和远程服务器的连接信息
    因此也会在系统中存在一个frm文件,用于存于远程信息以及如何连接远程表的相关信息。

5.6.2 Federated如何使用

Federated存储引擎可以实现SQL Server连接服务器的功能,但是由于本身的性能并不太好,通常可以通过复制等实现相同的目的,所以在当前的MySQL版本中,Federated存储引擎默认是禁止的。如果需要使用Federated存储引擎,则需要在/usr/local/mysql/my.cnf中加入federated=1,接着重启MySQL服务器,我们可以通过show engine来确认当前MySQL服务器是否支持Federated存储引擎。
而在create table语句中使用下面的连接字符串,
mysql://user_name[:password]@host_name[:port_num]/db_name/tbl_name
远程服务器绑定连接:
grant select,update,insert,delete on remote.remote_fet to fred_link@'127.0.0.1' identified by '123456'

Speicherdaten gehen leicht verloren, daher müssen die Daten reproduzierbar sein. 5.6 Federated Storage Engine

5.6.1 Funktionen von Federated Es wird gesagt, dass alle Tabellen, auf die wir zugreifen möchten, immer noch auf dem Remote-Server abgelegt sind und keine Daten lokal gespeichert werden. Bei jedem Zugriff auf eine Federated Storage Engine-Tabelle wird die Abfrage zur Ausführung an den Remote-Server gesendet und die relevanten Daten werden vom Remote-MySQL-Server abgerufen.
  • Keine Daten werden lokal gespeichert, alle Daten werden auf dem Remote-Server abgelegt
  • Die Tabellenstruktur und die Verbindungsinformationen des Remote-Servers müssen lokal gespeichert werden
Daher gibt es im System auch eine FRM-Datei zum Remote-Speichern Informationen und Informationen zum Herstellen einer Verbindung zur Remote-Tabelle.

5.6.2 Verwendung von Federated

🎜Die Federated-Storage-Engine kann die Funktion einer SQL Server-Verbindung zum Server realisieren. Aufgrund ihrer eigenen Leistung kann jedoch normalerweise derselbe Zweck erreicht werden Replikation usw., daher ist in der aktuellen MySQL-Version die Federated Storage Engine standardmäßig deaktiviert. Wenn Sie die Federated Storage Engine verwenden müssen, müssen Sie federated=1 zu /usr/local/mysql/my.cnf hinzufügen und dann den MySQL-Server neu starten. Wir können show engine übergeben, um zu bestätigen, ob der aktuelle MySQL-Server die Federated Storage Engine unterstützt. 🎜 Und verwenden Sie die folgende Verbindungszeichenfolge in der create table-Anweisung: 🎜mysql://user_name[:password]@host_name[:port_num]/db_name/tbl_name🎜 Remote Server Bindungsverbindung: 🎜grant select,update,insert,delete on remote.remote_fet to fred_link@'127.0.0.1' identifiziert durch '123456'🎜 Sie können die relevanten Informationen des Remote-Servers ermitteln, die abgefragt werden sollen und einige Informationen zu verwandten Datenbanktabellen. 🎜🎜🎜5.6.3 Anwendbare Szenarien von Federated🎜🎜🎜🎜Gelegentliche statistische Analyse und manuelle Abfrage🎜 Aufgrund der langsamen Leistung von Federated ist es nur für gelegentliche statistische Analysen und manuelle Abfragen geeignet. 🎜🎜🎜🎜6 So wählen Sie die richtige Speicher-Engine aus🎜🎜🎜Referenzbedingungen: 🎜
  • Transaktionen
  • Backup
  • Crash-Recovery
  • Einzigartige Funktionen von Speicher-Engines
    Vermeiden Sie die Vermischung von Speicher-Engines.

Weitere verwandte kostenlose Lernempfehlungen: MySQL-Tutorial(Video)

Das obige ist der detaillierte Inhalt vonBig Data Learning Teil 2 MYSQL Advanced. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen