MySQL slaat op verschillende plaatsen informatie op over verschillende opties die voor een database zijn ingesteld, afhankelijk van het type optie en de reikwijdte ervan. Hier is een overzicht:
1. Opties op databaseniveau (instellingen specifiek voor een database):
* `information_schema.SCHEMATA` tabel: Deze tabel bevat algemene informatie over elke database (schema), waaronder:
* `DEFAULT_CHARACTER_SET_NAME`:De standaardtekenset voor de database.
* `DEFAULT_COLLATION_NAME`:De standaardsortering voor de database.
* `SHOW CREATE DATABASE`-instructie: Deze instructie geeft de SQL-instructie weer die is gebruikt om de database te maken, inclusief eventuele specifieke opties die zijn ingesteld tijdens het maken. Bijvoorbeeld:
```sql
TOON DATABASE MAKEN uw_database_naam;
```
De uitvoer zal er ongeveer zo uitzien:
```
MAAK DATABASE `uw_database_naam` /*!40100 STANDAARD TEKENSET utf8mb4 VERZAMELEN utf8mb4_unicode_ci */
```
Dit toont de tekenset en sortering die expliciet zijn ingesteld (of standaard zijn ingesteld). Het zal niet alle mogelijke instellingen tonen, maar het is cruciaal voor het begrijpen van de initiële configuratie.
* `SHOW VARIABELEN LIKE`-instructie: U kunt dit gebruiken om globale en sessievariabelen te bekijken die indirect van invloed kunnen zijn op een database. Hoewel ze niet rechtstreeks databasespecifiek zijn, kunnen sommige variabelen die verband houden met tekensets, opslagengines, enz., implicaties hebben voor het gedrag van de database.
```sql
TOON VARIABELEN ZOALS 'character_set%';
TOON VARIABELEN ZOALS 'collatie%';
```
2. Opties op tabelniveau (instellingen specifiek voor een tabel binnen een database):
* `information_schema.TABLES` tabel: Deze tabel bevat algemene informatie over tabellen, waaronder:
* `TABLE_COLLATION`:De sortering van de tabel.
* `ENGINE`:de opslagengine die door de tabel wordt gebruikt (bijvoorbeeld InnoDB, MyISAM).
* `TABLE_COMMENT`:elke opmerking die aan de tabel is gekoppeld.
* `SHOW CREATE TABLE`-instructie: Dit is de meest directe manier om alle opties voor een specifieke tabel te bekijken:
```sql
TOON TABEL MAKEN uw_tabel_naam;
```
De uitvoer toont de volledige `CREATE TABLE`-instructie, inclusief:
* Kolommen en hun gegevenstypen.
* Indexen (primaire sleutel, externe sleutels, unieke indexen, enz.).
* Beperkingen (bijvoorbeeld 'NOT NULL', 'DEFAULT'-waarden).
* Opslagmotor.
* Rijformaat (voor MyISAM).
* Tekenset en sortering (indien expliciet ingesteld op tabelniveau, waarbij de databasestandaard wordt overschreven).
* Tabelopmerkingen.
* Partitioneringsinformatie (als de tabel gepartitioneerd is).
* Automatische verhogingswaarde.
* `informatie_schema.COLUMNS` tabel: Deze tabel bevat informatie over elke kolom in een tabel, waaronder:
* `COLUMN_DEFAULT`:de standaardwaarde voor de kolom.
* `IS_NULLABLE`:Of de kolom `NULL` waarden mag bevatten.
* `DATA_TYPE`:het gegevenstype van de kolom (bijvoorbeeld `INT`, `VARCHAR`).
* `CHARACTER_SET_NAME`:De tekenset voor de kolom (als het een tekenreekstype is).
* `COLLATION_NAME`:De sortering voor de kolom (als het een tekenreekstype is).
* `COLUMN_COMMENT`:elke opmerking die aan de kolom is gekoppeld.
* `information_schema.KEY_COLUMN_USAGE` tabel: Deze tabel biedt informatie over relaties met externe sleutels.
* `information_schema.STATISTICS` tabel: Deze tabel bevat informatie over indexen op tabellen.
3. Opties op serverniveau (algemene instellingen):
* Configuratiebestanden (mijn.cnf/mijn.ini): Deze bestanden zijn de primaire locatie voor het configureren van de MySQL-server. Ze bevatten instellingen die van toepassing zijn op alle databases en tabellen op de server. Belangrijke instellingen zijn onder meer:
* `character-set-server`:De standaardtekenset voor de server.
* `collation-server`:De standaardsortering voor de server.
* `innodb_buffer_pool_size`:De hoeveelheid geheugen die is toegewezen aan de InnoDB-bufferpool.
* `max_connections`:Het maximale aantal gelijktijdige verbindingen dat is toegestaan.
* `sql_mode`:Definieert de SQL-modi die van invloed zijn op de manier waarop de server met query's omgaat.
* Opdrachtregelopties: Bij het starten van de MySQL-server kunt u opdrachtregelopties doorgeven die de instellingen in de configuratiebestanden overschrijven.
* `SHOW GLOBAL VARIABLES`-instructie: Deze verklaring toont alle globale variabelen en hun huidige waarden. Dit is een cruciale manier om de actieve serverinstellingen te zien. Bijvoorbeeld:
```sql
TOON GLOBALE VARIABELEN;
TOON GLOBALE VARIABELEN ZOALS 'innodb_%'; -- Toon InnoDB-gerelateerde variabelen
```
* `TOON GLOBAL STATUS`-instructie: Deze verklaring toont de statusvariabelen van de server, die informatie geven over prestaties, verbindingen en andere serveractiviteiten.
4. Opties op sessieniveau (Clientverbindingsinstellingen):
* 'SHOW SESSION VARIABELEN'-instructie: Deze instructie geeft de sessiespecifieke variabelen voor de huidige clientverbinding weer. Deze variabelen kunnen globale variabelen overschrijven voor de duur van de sessie.
```sql
TOON SESSIEVARIABELEN;
TOON SESSIEVARIABELEN ZOALS 'character_set%';
```
* `SET`-instructie: U kunt de `SET`-instructie gebruiken om sessievariabelen te wijzigen.
```sql
SET karakter_set_client ='utf8mb4';
```
Samengevat:
* Gebruik `SHOW CREATE DATABASE` om de creatieopties op databaseniveau te bekijken.
* Gebruik `SHOW CREATE TABLE` om opties voor het maken van tabellen op tabelniveau te zien (en alles over de structuur van een tabel).
* Gebruik 'information_schema'-tabellen voor gestructureerde metagegevens over databases, tabellen en kolommen.
* Gebruik `TOON GLOBALE VARIABELEN` om actieve serverbrede instellingen te bekijken.
* Gebruik `SHOW SESSION VARIABELEN` om instellingen te bekijken die specifiek zijn voor uw huidige verbinding.
* Controleer de MySQL-configuratiebestanden (my.cnf/my.ini) voor de standaard serverinstellingen.
Begrijpen waar deze opties zijn opgeslagen en hoe ze op elkaar inwerken (algemeen versus sessie versus database versus tabel) is van cruciaal belang voor het beheren en oplossen van problemen met uw MySQL-databases. Houd er ook rekening mee dat de specifieke beschikbare opties en hun standaardwaarden kunnen variëren, afhankelijk van de MySQL-versie die u gebruikt. |