MySQL is een vrij toegankelijk SQL-relationele databasebeheersysteem dat ontwikkeld is en ondersteund wordt door Oracle.

Dat is het korte antwoord op de vraag “wat is MySQL?”, maar laten we dat antwoord eens opdelen in stukken die wat meer geschikt zijn voor beginners zoals jij.

Een database is niet meer dan een georganiseerde verzameling gegevens die zo gestructureerd is dat die gegevens gemakkelijk te gebruiken en terug te vinden zijn. Voor een WordPress-site verstaan we onder “gegevens” zaken als de tekst van je blogposts, informatie voor alle geregistreerde gebruikers van je site, autoloaded data, belangrijke settingconfiguraties enz.

MySQL is een van de vele populaire systemen dat die gegevens voor je kan opslaan en beheren, en het is een bijzonder populaire database-oplossing voor WordPress sites.

Leessuggestie: Zo los je de “MySQL Server Has Gone Away” foutmelding op en Zo los je de MySQL 1064 foutmelding op.

Laten we de vraag hieronder eens nader beschouwen.

Wat is MySQL? De details

MySQL werd oorspronkelijk in 1995 uit de startblokken geschoten. Sindsdien heeft het enkele eigenaarschaps-/leiderschapswisselingen doorgemaakt vóórdat het in 2010 uiteindelijk belandde bij de Oracle Corporation. Ook al is het nu van Oracle, MySQL is nog steeds open source software. Wat betekent dat je het vrijelijk kunt gebruiken en aanpassen aan jouw wensen.

MySQL logo
MySQL logo (bron: MySQL/Oracle)

De naam is een samenvoeging van “My” – de naam van de dochter van een mede-oprichter – en “ SQL” – de afkorting van Structured Query Language. De laatste is een programmeertaal die je helpt om gegevens te traceren en te beheren in een relationele database.

Om te kunnen begrijpen hoe MySQL in zijn werk gaat, is het zaak om twee verwante begrippen uit elkaar te houden:

Relationele Databases

Als het gaat om de opslag van gegevens in een database, zijn er diverse benaderingen denkbaar.

MySQL kiest voor de benadering die we relationele database noemen.

In een relationele database zijn je gegevens onderverdeeld in verschillende van elkaar afgescheiden opslagruimtes – tabellen geheten – in plaats van alles bij elkaar te gooien in één grote opslagloods.

Stel bijvoorbeeld, je wilt twee types informatie opslaan:

  • Customers– NAW-gegevens, geboortedatum etc.
  • Bestellingen – zoals, welke producten er gekocht werden, voor welke prijs, wie de bestelling aannam etc.

Als je die gegevens allemaal bij elkaar zou stoppen, in één grote pot, dan loop je onvermijdelijk tegen enkele problemen aan, zoals:

  • Verschillende gegevens – klantgegevens zijn andere gegevens dan ordergegevens.
  • Dubbele gegevens – de klantgegevens bevatten een klantnaam en ordergegeven bevatten ook een klantnaam. Zulke dubbelingen kunnen gauw een rommeltje worden. Denk aan twee klanten die dezelfde naam hebben.
  • Geen organisatie – hoe koppel je op een betrouwbare manier informatie omtrent de order aan informatie over de klant?

Om zulke problemen voor te zijn maakt een relationele database gebruik van een tabel met klanten en een aparte tabel met orders.

Echter, je wilt vermoedelijk ook kunnen vragen: “Laat me alle orders zien van Jan Jansen!” Dat is het moment waarop het relationele deel om de hoek komt kijken.

Gebruik makend van een zogenaamde “sleutel” kun je de gegevens uit deze twee tabellen aan elkaar koppelen, zodat je de gegevens in de verschillende tabellen naar wens kunt manipuleren en koppelen. Hierbij willen we opmerken dat de sleutel niet de klantnaam is. In plaats daarvan kies je iets full-proof (en fool-proof) unieks, zoals een identificatienummer.

Als je ooit gekeken hebt in de database van je WordPress-site, dan weet je dat die het relationele model hanteert, met al je gegevens ondergebracht in onderscheiden tabellen.

WordPress maakt standaard gebruik van 12 verschillende tabellen, maar veel WordPress-plugins voegen daar nog eens hun eigen tabellen aan toe. De database voor onderstaande WordPress-site heeft bijvoorbeeld 44 verschillende tabellen!

Een voorbeeld van verschillende tabellen in MySQL
Een voorbeeld van verschillende tabellen in MySQL

Laten we dit relationele concept even concreet maken voor WordPress…

WordPress slaat blogposts op in de tabel wp_posts en gebruikers in de tabel wp_users. Echter, omdat die twee tabellen door middel van een sleutel met elkaar verbonden worden, kun je elke willekeurige gebruiker koppelen aan alle blogposts die hij of zij geschreven heeft.

Hieronder zie je dat in beeld gebracht.

Elke post is toegekend aan een post_author, het unieke identificatienummer (d.i. de sleutel):

De tabel wp_posts
De tabel wp_posts

Dan, als je wilt kijken welke gebruikersaccount correspondeert met dat nummer, kun je de ID opzoeken in de tabel wp_users:

De tabel wp_users
De tabel wp_users

De sleutel – het ID-nummer – is wat alles met elkaar verbindt. En dat is hoe ze aan elkaar “gekoppeld” zijn, ook al zitten ze allemaal in verschillende tabellen.

Client-Servermodel

Behalve van een relationele databasesysteem maakt MySQL eveneens gebruik van iets dat het client-servermodel heet.

Het server gedeelte is waar je gegevens daadwerkelijk ondergebracht zijn. Om toegang te krijgen tot die gegevens, moet je erom vragen. Daar komt de client in dit verhaal om de hoek kijken.

Gebruikmakend van SQL – de programmeertaal die we in het begin al even noemden – stuurt de client een verzoek naar de database server om de gegevens die hij of zij nodig heeft.

Als iemand bijvoorbeeld een blogpost op jouw site opzoekt, stuurt je WordPress-site diverse SQL-verzoeken naar de databaseserver om alle informatie bij elkaar te scharrelen die nodig is om de betreffende blogpost af te leveren aan de webbrowser van die bezoeker. Het stuurt een:

  • Query naar de tabel wp_posts om de content van de blogpost
  • Query naar de tabel wp_users om informatie voor de author box (met behulp van de sleutel die we je hierboven lieten zien)
  • Enz.

Als je precies wilt zien welke types databaseverzoeken je WordPress doet, kun je gebruikmaken van de schitterende gratis plugin Query Monitor waarmee je de precieze interactie kunt volgen tussen jouw WordPress-site (de cliënt) en de databaseserver:

De plugin Query Monitor laat je de verschillende SQL-queries zien die naar de MySQL-server gaan
De plugin Query Monitor laat je de verschillende SQL-queries zien die naar de MySQL-server gaan

Een andere premium oplossing die je kan gebruiken is New Relic (licentie vereist). Als je WordPress site geen toegang heeft tot de databaseserver, activeert deze de veelvoorkomende fout bij het instellen van een databaseverbindingsbericht. Bij Kinsta gebruiken we de ingebouwde Kinsta APM tool om je site te monitoren.

Kinsta maakt gebruik van MariaDB, niet van MySQL: Wat is het verschil?

Hier bij Kinsta maken we gebruik van het databasesysteem dat luistert naar de naam MariaDB. Alle eigenschappen die je zag bij MySQL zijn ook van toepassing op MariaDB.

In feite is MariaDB eigenlijk een vertakking van MySQL en de hoofdontwikkelaar van MariaDBlead is één van de oorspronkelijke oprichters van MySQL. “Vertakking” wil zoveel zeggen als: de ontwikkelaars van MariaDB namen de originele, vrij toegankelijke (d.i. open source) MySQL-code als fundament en bouwden daarop verder met als resultaat: MariaDB.

Dus, hoewel het een andere naam heeft, is MariaDB erg nauw verbonden met MySQL en biedt een volledige “drop-in”-vervangingsmogelijkheid (d.w.z. je kunt naadloos overstappen van MySQL op MariaDB zonder de noodzaak om voorzorgsmaatregelen te treffen).

Echter, naast dat MariaDB interoperabiliteit biedt met MySQL, geeft het bovendien verbeterde performance op sommige terreinen. Dit past in onze filosofie om alleen het allerbeste op het gebied van digitale architectuur in te zetten voor je WordPress-site.

Samengevat: Wat is MySQL?

MySQL is een open source relationele databasebeheersysteem. Wat WordPress-sites aangaat, betekent dat: het helpt je bij de opslag van al je blogposts, gebruikers, plugin-informatie etc.

Het slaat die informatie op in separate “tabellen” en koppelt die met “sleutels” aan elkaar. Hetgeen meteen het ‘relationele‘ ervan aangeeft.

Wanneer je WordPress-site toegang wil tot die informatie, stuurt het een verzoek naar de MySQL-databaseserver gebruik makend van SQL (d.i. het client-servermodel).

Kinsta gebruikt MariaDB, niet MySQL. MariaDB is een aftakking van MySQL van de hand van één van de medeoprichters van MySQL en biedt drop-in vervangingsinteroperabiliteit, evenals enkele verbeteringen in prestatie.
Kortom, alle kernideeën in dit artikel zijn ook van toepassing op MariaDB.

Als je Kinsta als host kiest, bieden we je zowel directe databasetoegang, alsook de mogelijkheid gebruik te maken van databasemanagementtools als phpMyAdmin.