Rechercher dans le manuel MySQL
15.6.1.2 Creating Tables Externally
There are different reasons for creating InnoDB
tables externally; that is, creating tables outside of the data
directory. Those reasons might include space management, I/O
optimization, or placing tables on a storage device with
particular performance or capacity characteristics, for example.
InnoDB
supports the following methods for
creating tables externally:
Using the DATA DIRECTORY Clause
You can create an InnoDB
table in an external
directory by specifying a DATA DIRECTORY
clause in the CREATE TABLE
statement.
The DATA DIRECTORY
clause is supported for
tables created in file-per-table tablespaces. Tables are
implicitly created in file-per-table tablespaces when the
innodb_file_per_table
variable
is enabled, which it is by default.
- +-------------------------+
- | @@innodb_file_per_table |
- +-------------------------+
- | 1 |
- +-------------------------+
For more information about file-per-table tablespaces, see Section 15.6.3.2, “File-Per-Table Tablespaces”.
When you specify a DATA DIRECTORY
clause in a
CREATE TABLE
statement, the table's data file
(
)
is created in a schema directory under the specified directory.
table_name
.ibd
The following example demonstrates creating a table in an
external directory using the DATA DIRECTORY
clause. It is assumed that the
innodb_file_per_table
variable
is enabled.
- Database changed
- # MySQL creates the table's data file in a schema directory
- # under the external directory
- shell> cd /external/directory/test
- shell> ls
- t1.ibd
Usage Notes:
When creating a table in an external directory, ensure that the directory is known to
InnoDB
. Otherwise, if the server halts unexpectedly before data file pages are fully flushed, startup fails when the data file is not found during the pre-recovery discovery phase that searches known directories for data files (see Tablespace Discovery During Crash Recovery). To make a directory known, add it to theinnodb_directories
argument value.innodb_directories
is a read-only startup option that defines directories to scan at startup for data files. Configuring it requires restarting the server.MySQL initially holds the tablespace data file open, preventing you from dismounting the device, but might eventually close the file if the server is busy. Be careful not to accidentally dismount an external device while MySQL is running, or start MySQL while the device is disconnected. Attempting to access a table when the associated data file is missing causes a serious error that requires a server restart.
A server restart might fail if the data file is not found at the expected path. In this case, you can restore the tablespace data file from a backup or drop the table to remove the information about it from the data dictionary.
Before placing a table on an NFS-mounted volume, review potential issues outlined in Using NFS with MySQL.
If using an LVM snapshot, file copy, or other file-based mechanism to back up the table's data file, always use the
FLUSH TABLES ... FOR EXPORT
statement first to ensure that all changes buffered in memory are flushed to disk before the backup occurs.Using the
DATA DIRECTORY
clause to create a table in an external directory is an alternative to using symbolic links, whichInnoDB
does not support.
CREATE TABLE ...
TABLESPACE
syntax can be used in combination with the
DATA DIRECTORY
clause to create a table in an
external directory. To do so, specify
innodb_file_per_table
as the tablespace name.
This method is supported only for tables created in
file-per-table tablespaces, but does not require the
innodb_file_per_table
variable
to be enabled. In all other respects, this method is equivalent
to the CREATE TABLE ... DATA DIRECTORY
method
described above. The same usage notes apply.
You can create a table in a general tablespace that resides in an external directory.
For information about creating a general tablespace in an external directory, see Creating a General Tablespace.
For information about creating a table in a general tablespace, see Adding Tables to a General Tablespace.
Nederlandse vertaling
U hebt gevraagd om deze site in het Nederlands te bezoeken. Voor nu wordt alleen de interface vertaald, maar nog niet alle inhoud.Als je me wilt helpen met vertalingen, is je bijdrage welkom. Het enige dat u hoeft te doen, is u op de site registreren en mij een bericht sturen waarin u wordt gevraagd om u toe te voegen aan de groep vertalers, zodat u de gewenste pagina's kunt vertalen. Een link onderaan elke vertaalde pagina geeft aan dat u de vertaler bent en heeft een link naar uw profiel.
Bij voorbaat dank.
Document heeft de 26/06/2006 gemaakt, de laatste keer de 26/10/2018 gewijzigd
Bron van het afgedrukte document:https://www.gaudry.be/nl/mysql-rf-innodb-create-table-external.html
De infobrol is een persoonlijke site waarvan de inhoud uitsluitend mijn verantwoordelijkheid is. De tekst is beschikbaar onder CreativeCommons-licentie (BY-NC-SA). Meer info op de gebruiksvoorwaarden en de auteur.
Referenties
Deze verwijzingen en links verwijzen naar documenten die geraadpleegd zijn tijdens het schrijven van deze pagina, of die aanvullende informatie kunnen geven, maar de auteurs van deze bronnen kunnen niet verantwoordelijk worden gehouden voor de inhoud van deze pagina.
De auteur Deze site is als enige verantwoordelijk voor de manier waarop de verschillende concepten, en de vrijheden die met de referentiewerken worden genomen, hier worden gepresenteerd. Vergeet niet dat u meerdere broninformatie moet doorgeven om het risico op fouten te verkleinen.