MySQL

Van Wikipedia, de gratis encyclopedie
Spring naar navigatie Spring naar zoeken
MySQL

MySQL-logo
Basis data

ontwikkelaar Oracle Corporation (tot februari 2008: MySQL AB , tot januari 2010: Sun Microsystems )
Jaar van uitgave 23 mei 1995
Huidige versie 8.0.26[1]
( 20 juli 2021 )
besturingssysteem Linux[2] , Microsoft Windows[2] , macOS[2] , FreeBSD[2] , Solaris[2] , Unix-achtig systeem
programmeertaal C[3] , C++[4]
categorie Databasemanagementsysteem
Licentie GNU General Public License, versie 2[5] , propriëtaire licentie[6]
Duits sprekend Ja
www.mysql.com

MijnSQL [ ˌMaɪɛskjuːˈɛl ] [7] is een van 's werelds meest populaire [8] relationele databasebeheersystemen . Het is beschikbaar als open source software en als commerciële enterprise-versie voor verschillende besturingssystemen en vormt de basis voor veel dynamische websites .

MySQL is ontwikkeld door het Zweedse bedrijf MySQL AB sinds 1994. In februari 2008 werd MySQL AB overgenomen door Sun Microsystems , dat op zijn beurt in januari 2010 werd gekocht door Oracle .

De naam MySQL bestaat uit de voornaam My , die de dochter van MySQL AB-medeoprichter Michael Widenius draagt, en SQL . [9]

Toepassingsgebieden en distributie

Een geprefereerd toepassingsgebied voor MySQL is dataopslag voor webservices . MySQL wordt vaak gebruikt in combinatie met de Apache- of Nginx -webserver en de PHP- scripttaal. Men spreekt dan van een LAMP- stack (Linux / Apache / MySQL / PHP) of van een LEMP-stack (de "e" staat dan voor [e]nginx). Veel webservices maken gebruik van deze architectuur en bedienen, afhankelijk van hun grootte en vereisten, een groot aantal MySQL-servers, die worden gebruikt om toegang vanaf het netwerk te verwerken. [10] MySQL wordt onder meer gebruikt door Flickr , [11] YouTube , [12] Facebook, [13] [14] en Twitter . [15] Bovendien wordt MySQL in veel producten gebruikt als een embedded databasesysteem . [16] MariaDB is een fork van MySQL en compatibel met MySQL, zodat MySQL-databases vrij eenvoudig kunnen worden gemigreerd. De oprichter van MySQL, Monty Widenius, ontwikkelde de nieuwe vork nadat Oracle MySQL had gekocht en breidt deze samen met een team van voormalige MySQL-kernontwikkelaars uit, zodat er nu meer functies beschikbaar zijn. Een terugmigratie is soms niet meer mogelijk na gebruik van deze functies. Dit is met name het geval bij het gebruik van opslagengines zoals ColumnStores, waarvan MySQL niets weet. [17]

Platformen en interfaces

MySQL kan op veel Unix varianten, macOS en Linux draaien, maar ook op Windows , OS/2 en i5/OS (voorheen OS/400). Sinds begin 2008 is er ook een Symbian- versie beschikbaar.

Structuur van het gebruikte opslagsysteem

MySQL biedt in feite een MySQL-server waarop gegevens worden opgeslagen en een of meer MySQL-clients die vragen naar de server sturen, die de server beantwoordt. De standaardpoort voor de MySQL-server is 3306 in het Transmission Control Protocol (TCP).

Op het databasebeheersysteem , de MySQL-server, kunnen meerdere databases worden aangemaakt. In een database kunnen meerdere tabellen worden aangemaakt. In de praktijk maakt MySQL voor elke database een map op de harde schijf aan waarin bestanden voor de structuur en gegevens van de afzonderlijke tabellen zijn opgeslagen. Het exacte formaat van deze bestanden hangt af van de opslagengine die voor de betreffende tabel wordt gebruikt.

De tafels kunnen elk van een ander type zijn. Het tabeltype bepaalt welke opslagengine (storagesubsysteem) wordt gebruikt voor query's naar een tabel. Elke tabel kan kolommen bevatten waarin gegevens van een bepaald gegevenstype kunnen worden opgeslagen (bijvoorbeeld gehele getallen (hele getallen) of tekenreeksen (tekenreeksen)). De maximale grootte van de tabellen wordt in principe alleen beperkt door het besturingssysteem .

Procedure voor het verwerken van een verzoek

Een client kan databasequery's naar een MySQL-server sturen. Deze is verantwoordelijk voor het zo efficiënt mogelijk afhandelen van elke aanvraag. De querycache wordt eerst opgevraagd en, als het resultaat niet beschikbaar is, wordt de query geparseerd, geoptimaliseerd en uiteindelijk uitgevoerd; het resultaat wordt dan geretourneerd.

Querycache

Om de prestaties te verbeteren, kan MySQL de resultaten van query's opslaan in een buffer, de querycache. Als later een identieke vraag naar de server wordt gestuurd zonder dat de gegevens in de database in de tussentijd zijn gewijzigd, wordt deze vanuit de cache beantwoord. De database zelf hoeft dan niet te worden benaderd. [18]

ontleden

Als een query moet worden uitgevoerd, wordt eerst gecontroleerd of de syntaxis geldig is. Om dit te doen, wordt het opgesplitst in zijn afzonderlijke componenten. Tegelijkertijd wordt enige basisinformatie over de query verzameld, zoals het type query (bijv. SELECT, INSERT, SET of GRANT), de betreffende tabellen of de inhoud van de WHERE-clausule. Aan het einde van deze stap kent MySQL de ontledingsboom, die vervolgens kan worden geoptimaliseerd. [19]

optimalisatie

Als een query syntactisch geldig is, wordt deze vervolgens geoptimaliseerd. De optimizer zoekt naar de meest efficiënte manier om de query te verwerken. Het belangrijkste doel is om het aantal uit te lezen datarecords zo laag mogelijk te houden. Dit wordt bijvoorbeeld bereikt wanneer gegevensrecords uit meerdere tabellen moeten worden gelezen, door middel van een slimme queryreeks ( JOIN ) van de tabellen; Tabellen die niet vereist zijn, worden volledig verwijderd uit de JOIN. De optimizer houdt er onder meer rekening mee of het zinvol is om een ​​index te gebruiken om de gegevensrecords die u zoekt te lokaliseren (en zo ja, welke), of dat het beter is om in plaats daarvan een tabelscan uit te voeren, dwz om loop de hele tafel door.

De beschikbare alternatieven worden geëvalueerd door de optimizer. Op basis van heuristieken wordt voor elke mogelijkheid ingeschat hoe lang de uitvoering zou duren. Het alternatief met de laagste kosten wordt dan ook daadwerkelijk uitgevoerd.

Het werk van de optimizer kan worden getraceerd met het MySQL EXPLAIN commando. Deze opdracht (gevolgd door een specifieke query) instrueert de optimizer om zijn queryplan te retourneren. Als output ontvangt de gebruiker informatie voor elke stap die de optimizer zou uitvoeren om de vraag te beantwoorden. Op deze manier kan met een beetje achtergrondkennis bepaald worden in hoeverre de query geoptimaliseerd kan worden zodat deze sneller kan worden uitgevoerd. [18]

verhaal

Michael Widenius en David Axmark begonnen in 1994 met het ontwikkelen van MySQL. [20] Het werd aanvankelijk ontwikkeld als een kloon voor mSQL om databases van het maskergestuurde databasesysteem UNIREG beschikbaar te maken in webapplicaties. (UNIREG is in 1979 ontwikkeld door Michael Widenius en rond 1986 herschreven in de programmeertaal C, zodat het ook onder UNIX-systemen draaide.) MySQL was daardoor volledig compatibel met zowel mSQL als UNIREG.

Na een interne release op 23 mei 1995 werd de software in 1997 direct uitgebracht onder versienummer 3.1 om aan te geven dat het gebaseerd is op een core die een lange geschiedenis kent. Van meet af aan is het ontworpen voor grote hoeveelheden data en zeer goede prestaties, deels ten koste van stabiliteit en beschikbaarheid. Het scala aan functies was aanvankelijk echter beperkt. Er waren slechts een paar tafeltypes en geen transacties. Doorgaans worden nieuwe eigenschappen geïmplementeerd op verzoek van de gebruiker, die daarbij een zeer grote “inspraak” heeft.

Met versie 3.23 die in januari 2001 werd gepubliceerd, had MySQL twee soorten tabellen met transacties , waarvan er één ( InnoDB ) voldoet aan de ACID- criteria. Alle bewerkingen die van invloed zijn op algemene SQL-eigenschappen zijn hetzelfde voor alle tabeltypen, terwijl de eigenschappen van de tabeltypen erg kunnen verschillen vanwege de verschillende architectuur. Het MyISAM- type heeft sinds de vroege versie 3.23 een zeer krachtige full-text-zoekopdracht, die niet is geïmplementeerd in het InnoDB-type. Het replicatiesysteem is ook nieuw in versie 3.23. Het is ontworpen voor gebruik in een computernetwerk en is ideaal voor een ononderbroken werking. Verschillende databases op verschillende computerknooppunten zijn toegewezen aan het databasebeheersysteem (DBMS). Een van de databases fungeert als master; de inhoud van de database wordt hier gewijzigd. Het replicatiesysteem distribueert vervolgens de gegevensveranderende SQL-opdrachten naar de andere databases, die deze wijzigingen lokaal op hun tabellen volgen. Dit is een asynchrone replicatie van de SQL-opdrachten. Met het MySQL Cluster is een tabeltype beschikbaar waarbij de gehele database als in-memory database in het hoofdgeheugen kan worden vastgehouden. Synchrone replicatie tussen alle clusterknooppunten en transactieverwerking wordt ondersteund, maar zoeken in volledige tekst wordt niet ondersteund.

MySQL 4.0, dat in maart 2003 werd uitgebracht, maakt het gebruik van vakbonden mogelijk en introduceerde een querycache die de resultaten van veelgebruikte SQL-query's in de cache opslaat. [21]

MySQL 4.1 werd uitgebracht in oktober 2004. Het biedt gegevensopslag in verschillende tekensets per tabel; onder andere wordt ook Unicode ondersteund. Subquery's (subquery's / subselects) zijn mogelijk. [22]

Versie 5.0 werd uitgebracht in oktober 2005. Het ondersteunt alle objecttypen die zijn gedefinieerd in de SQL3-standaard . Nieuw in versie 5 is de ondersteuning van views , triggers , opgeslagen procedures en door de gebruiker gedefinieerde functies .

In februari 2008 nam Sun Microsystems MySQL AB over. De aankoopwaarde wordt gegeven als een miljard dollar; waarvan 200 miljoen in aandelenopties. [23] [24]

In november 2008 [25] werd MySQL 5.1 uitgebracht. Naast partitiefuncties , waarmee zeer grote tabellen in meerdere fysieke bestanden kunnen worden opgedeeld, zijn er onder meer een eventplanner, waarmee op gezette tijden vooraf gedefinieerde SQL-commando's kunnen worden uitgevoerd, en functies van de instancemanager. De API is herzien zodat het nu mogelijk is om componenten te laden en te lossen tijdens runtime en zonder de server opnieuw op te starten. [26]

In januari 2010 werd Sun Microsystems gekocht door Oracle. [27] Een paar maanden later kondigde Oracle aan dat de ontwikkeling van de Falcon- database-engine , die al was begonnen door MySQL AB, zou worden stopgezet.

MySQL 5.5 werd eind 2010 uitgebracht. InnoDB werd de standaard storage-engine. De prestaties zijn verbeterd door het gebruik van asynchrone I/O. Ook nieuw zijn de commando's SIGNAL / RESIGNAL, die standaardconforme foutafhandeling in opgeslagen procedures mogelijk maken. [28] [29]

MySQL 5.6, uitgebracht in 2012, bevat Memcached API's , wereldwijde transactie-ID's en verbeteringen aan PERFORMANCE_SCHEMA. [30]

In januari 2009, voordat Oracle MySQL AB kocht, lanceerde Monty Widenius een GPL-fork, MariaDB . MariaDB is gebaseerd op de codebasis van MySQL-server 5.5 en heeft zich tot doel gesteld de compatibiliteit met de door Oracle gepubliceerde MySQL-versies grotendeels te behouden. [31]

De ontwikkeling van MySQL 5.7 heeft in totaal twee jaar geduurd voordat het eind oktober 2015 uiteindelijk werd uitgebracht. De nieuwe versie kenmerkt zich met name door verbeterde prestaties, verbeterde replicatie en logging. Zo hebben de MySQL-ontwikkelaars een dynamisch kostenmodel aan de query-optimizer toegevoegd, wat een snellere uitvoering mogelijk maakt en de gebruiker meer mogelijkheden biedt voor interventie. [32]

Met een versiesprong naar MySQL 8 verscheen de volgende verdere ontwikkeling in 2018. Volgens de documentatie [33] is de 8-versieserie blijkbaar een upgrade, zodat de versienummers momenteel op twee manieren worden geteld.

kritiek

Sinds de overname van MySQL AB van Sun door Oracle komt er steeds meer kritiek op het databasesysteem. Het verschil tussen de gratis en commerciële versies van MySQL wordt steeds belangrijker. [34] Nieuwe functies zijn vaak alleen opgenomen in de commerciële versie van MySQL, plus de niet-openbare database met foutmeldingen, verouderde Bazaar-archieven en ontbrekende tests voor troubleshooting. [35]

Sinds eind 2012 neemt ook de ondersteuning in de open source community voor MySQL af. Na Fedora en OpenSUSE hebben Slackware en Arch Linux begin 2013 ook het MySQL-pakket vervangen door MariaDB , een fork van mede-oprichter Widenius. De trigger is het gebrek aan respect voor de gemeenschap en de steeds meer geïsoleerde ontwikkeling van het RDBMS. [36] [37] Evenzo schakelde de Wikimedia Foundation begin 2013 over op MariaDB.

Jaroslav Reznik, Fedora-projectmanager van Red Hat, zei dat MySQL evolueert naar een gesloten project. Alle nuttige informatie over beveiligingskwesties (CVE's) zou niet langer worden gepubliceerd. Er waren geen volledige regressietesten meer en een heel groot deel van de MySQL-bugdatabase was niet meer openbaar. [38]

Michael Widenius, de voormalige oprichter van MySQL AB, heeft scherpe kritiek op Oracle: Oracle heeft duidelijk gemaakt dat ze geen interesse hebben in open source, dat ze weigeren met de community samen te werken en dat ze MySQL in het algemeen niet leuk vinden. Hij noemt de commerciële extensies voor MySQL, de nu niet-openbare bugdatabase en het ontbreken van testcases voor nieuwe MySQL-code als voorbeelden van het negeren van open source-principes. Showcase-functies zoals online back-up en externe sleutels voor alle opslag-engines die waren beloofd voor MySQL 6.0 zijn niet vrijgegeven, hoewel ze volledig ontwikkeld en klaar zijn. Verwijder Oracle-functies in plaats van bugs te repareren. De meeste oorspronkelijke MySQL-ontwikkelaars zouden Oracle hebben verlaten. Als verder bewijs van de "minachting" van MySQL-gebruikers noemt hij de "scherpe" verhoging van licentie- en ondersteuningskosten en het ontbreken van een open roadmap. [39]

Opslag subsystemen

MySQL biedt verschillende storage subsystemen (engines). Elke motor is geoptimaliseerd voor een speciaal toepassingsscenario. Vergeleken met de traditionele meerlaagse architectuur van databasesystemen zijn de engines geen puur opslagsubsysteem, maar bieden ze meer functionaliteit. Het beheer van transacties, indices en referentiële integriteit is in handen van de engine.

De afzonderlijke storage-engines ondersteunen verschillende functies en hebben verschillende prestaties, afhankelijk van het toepassingsgebied. Afhankelijk van waar een tabel voor wordt gebruikt (bijv. voornamelijk SELECT-verzoeken lezen of voornamelijk INSERT / UPDATE-verzoeken schrijven), moet een geschikte opslagengine worden geselecteerd. Een ander criterium voor de keuze van de opslagengine kan ook de noodzaak zijn om een ​​bepaalde functie te gebruiken, b.v. B. Transacties of referentiële integriteit.

MySQL is ook uit te breiden met eigen storage engines. [40] Naast de door MySQL gepubliceerde en bij MySQL geleverde motoren zijn er ook motoren van andere fabrikanten.

officiële motoren

MijnISAM

MyISAM biedt snelle toegang tot tabellen en indexen zonder transactiebeveiliging. MySQL beheert parallelle databank toegangen (gelijktijdigheid) op tabelniveau, dat wil zeggen de gehele tabel geblokkeerd voor bepaalde handelingen, afhankelijk van het type vergrendeling (lezen of schrijven lock ). Een groot aantal gelijktijdige leestoegangen is mogelijk, aangezien leestoegangen alleen zogenaamde READ-locks verkrijgen. Hiermee kunnen andere "LEZERS" tegelijkertijd toegang krijgen tot hetzelfde gegevensrecord. Schrijftoegang moet echter wachten tot alle huidige "LEZERS" hun leesbewerkingen hebben voltooid en dus hun LEZEN-blokkering vrijgeven. Een “LEZER” hoeft alleen andere “SCHRIJVER” te blokkeren.

Een gegevensrecord dat wordt gewijzigd, kan op geen enkele andere manier worden gelezen of geschreven. Een "SCHRIJVER" (schrijftoegang tot gegevens) moet daarom andere "LEZER" en "SCHRIJVER" blokkeren. Dit wordt gedaan met behulp van een "schrijfvergrendeling". Dit gebeurt ook op tafelniveau, dus gedurende deze tijd kan de hele tabel niet worden gelezen of geschreven totdat de "Write-Lock" wordt geannuleerd.

MyISAM is een zeer efficiënte opslagengine voor een querymix die voornamelijk bestaat uit leestoegangen. Verdere voordelen van MyISAM zijn:

  • meest flexibele autoincrement-eigenschap van alle opslagengines
  • MyISAM-tabellen kunnen worden geconverteerd naar gecomprimeerde alleen-lezen tabellen
  • MyISAM-tabellen kunnen een vaste regellengte hebben, wat sneller zoeken naar regels mogelijk maakt
  • MyISAM-tabellen kunnen worden gebruikt om MERGE-tabellen te maken
  • MyISAM is zeer draagbaar omdat de tabelbestanden (.frm-bestand (tabelstructuur), .MYD (gegevensbestand), .MYI (indexbestand)) naar een andere machine kunnen worden gekopieerd en daar onmiddellijk als databasetabellen beschikbaar zijn.
  • Krachtig zoeken in volledige tekst

MySQL beheert de toegangsrechten via toewijzingstabellen in de mysql-database, die (zelfs in de nieuwste versie) uitsluitend in MyISAM-tabellen zijn opgeslagen. MyISAM kan dus niet worden uitgesloten bij het compileren of starten van de server. MyISAM was ook de standaard storage engine tot aan MySQL versie 5.1, waarna InnoDB deze plaats innam.

InnoDB

InnoDB biedt transactieveilige lees- en schrijftoegang, dwz het biedt begin-, vastleg- en terugdraaifuncties. Dit zorgt ervoor dat een query, of een reeks gerelateerde query's, volledig of niet wordt uitgevoerd, maar niet onvolledig. Het gewenste isolatieniveau van de transacties kan worden ingesteld. Dit kan de zekerheid van een volledige en correcte uitvoering verminderen, wat een positief effect heeft op de uitvoeringssnelheid.

InnoDB biedt ook de mogelijkheid om relaties met externe sleutels te controleren. InnoDB is de standaard storage engine sinds MySQL 5.5. [28] Vanaf MySQL 5.6 is zoeken in volledige tekst ook mogelijk in InnoDB-tabellen. [41] InnoDB voldoet echter niet volledig aan de SQL3-standaard: externe sleutels worden slechts in beperkte mate ondersteund. [42]

InnoDB slaat de tabelstructuur op in individuele frm-bestanden, gebruikersgegevens en indices in een tabelruimte. De tabelruimte wordt ingesteld voordat u met de databaseserver gaat werken en kan een of meer bestanden beslaan. De bestanden in de tabelruimte kunnen naar verschillende mappen worden gedistribueerd. De configuratie van de tabelruimte kan achteraf niet worden aangepast zonder risico op gegevensverlies. Als de configuratie van de tablespace wordt gewijzigd, wordt de hele database hersteld vanaf een reservekopie.

SAMENVOEGEN

MERGE biedt de mogelijkheid om meerdere tabellen van het type MyISAM met dezelfde structuur in één tabel te combineren en te benaderen. Gecomprimeerde MyISAM-tabellen kunnen worden gecombineerd met ongecomprimeerde MyISAM-tabellen. Op deze manier kan data-archivering worden geïmplementeerd.

GEHEUGEN (HOOP)

Beheer van tijdelijke tafels. De definitie van de tabellen wordt permanent op de harde schijf opgeslagen. De gegevens worden opgeslagen in het werkgeheugen. Niet alle gegevenstypen worden echter ondersteund. Wanneer de server opnieuw wordt opgestart, zijn de tabelstructuren nog steeds beschikbaar en moet de inhoud opnieuw worden ingelezen, bijvoorbeeld uit permanente tabellen. Er worden speciale geheugenbeheerprocedures geïmplementeerd om de ruimte van verwijderde records bij de volgende invoeging opnieuw te gebruiken.

VOORBEELD

Codevoorbeeld voor het ontwikkelen van uw eigen storage engine. VOORBEELD heeft functies voor het maken van een tabel; de functies voor het schrijven en lezen van de gegevensrecords worden slechts gesuggereerd. Een SELECT-instructie retourneert altijd een lege resultaatset.

BDB

BDB is de afkorting voor Berkeley DB . Deze opslagengine is ontwikkeld door Sleepycat Software en later verkocht aan Oracle . De BDB biedt transactiebeveiliging en speciale voorzorgsmaatregelen zodat de opgeslagen gegevens behouden blijven in het geval van een systeemstoring.

De BDB-opslagengine wordt niet langer ondersteund vanaf versie 5.1.

GEFEDEREERD

De FEDERATED-engine biedt toegang tot tabellen die zich op een andere server bevinden. Als u een tabel van het type FEDERATED maakt, moet de externe tabel al op de andere server bestaan. De lokale server gedraagt ​​zich als een client die toegang heeft tot de externe server. De FEDERATED engine gedraagt ​​zich als een federatief informatiesysteem , wat inhoudt dat hij de data niet zelf opslaat, maar toegang geeft tot de remote server, terwijl de data ook hierop te benaderen is. Met versie 5.0 zijn alleen andere MySQL-servers toegankelijk.

De toegangsgegevens tot de externe databaseserver worden onversleuteld opgeslagen in het lokale fr-bestand. De toegang tot de datadirectory moet op besturingssysteemniveau worden beperkt om te voorkomen dat onbevoegden de toegangsrechten uitlezen.

ARCHIEVEN

De ARCHIVE engine is ontworpen om grote hoeveelheden data op te slaan en daarbij zo spaarzaam mogelijk gebruik te maken van de beschikbare opslagruimte. Er kunnen geen indexen worden gemaakt. Alleen de toegangen INSERT en SELECT worden ondersteund. Snelle toegang tot de gegevens staat hier niet op de voorgrond.

Voordat de gegevens op het opslagmedium worden opgeslagen, worden deze eerst verzameld in een compressiebuffer. Wanneer een reeks invoegbewerkingen is voltooid, wordt het optimale compressiealgoritme bepaald en worden de gegevens in gecomprimeerde vorm uitgevoerd.

Als een SELECT-verzoek van een andere gebruiker komt tijdens een reeks invoegbewerkingen, wordt voortijdige compressie en uitvoer van de gegevens die zijn opgeslagen in de compressiebuffer geforceerd.

CSV

Met de CSV-engine worden de gegevens opgeslagen in CSV-indeling : getallen worden niet binair opgeslagen, maar als reeksen cijfers; de individuele waarden worden gescheiden door komma's.

ZWART GAT

BLACKHOLE is ontwikkeld om de syntaxis van SQL-statements te controleren en om een ​​binair logboek te schrijven. De gegevens worden niet opgeslagen. Hierdoor kunnen syntaxiscontroles van SQL-instructies worden uitgevoerd zonder dat er ruimte hoeft te worden toegewezen om de gegevens op te slaan. De uitgang van het binaire logboek kan via een parameter worden geactiveerd en gedeactiveerd.

De BLACKHOLE-engine is ideaal voor de volgende taken:

  • Syntaxiscontrole van dumpbestanden
  • Testen van gegevensreplicatie door vervolgens de binaire logs op de masterserver en de slaveserver te vergelijken.
  • Tijdmetingen om de kosten van het schrijven van het binaire logboek te bepalen.

NDB

NDB staat voor GEN D ata B ase. De NDB-opslagengine is een onafhankelijk onderdeel dat de permanente opslag van gegevens mogelijk maakt en is verantwoordelijk voor de coördinatie van alle toegangen tot gegevensknooppunten in een MySQL-cluster . [43] Applicaties hebben rechtstreeks toegang tot de NDB-opslagengine via de NDB API of via een MySQL-knooppunt. Toegang via een MySQL-knooppunt is veel gemakkelijker voor applicatieprogrammeurs, omdat in dit geval standaard SQL-commando's kunnen worden gebruikt en het leren van de NDB-specialiteiten niet nodig is.

De NDB-API is een multithreading- compatibele interface voor de acceptatie van alle inkomende gegevensverzoeken. [43] Voor elk verzoek worden een of meer threads gestart. De NDB-API is alleen sequentieel toegankelijk, wat betekent dat de prestaties van het cluster waarschijnlijk beperkt zijn als er een groot aantal inkomende verzoeken is.

Engines van derden

Naast de officiële motoren bieden verschillende fabrikanten ook andere motoren aan met andere eigenschappen of extra functies. Sommige worden hier als voorbeeld genoemd.

Revisie motor

De revisie-engine van DDEngine voegt automatisch versiebeheer toe als een plug-in op het niveau van de opslagengine. Naast de pure opslag van data kan deze engine garanderen dat data kan worden hersteld zoals het was op een bepaald moment. Deze eigenschap kan b.v. B. kan worden gebruikt om de geschiedenis van producteigenschappen op te slaan of om te voldoen aan wettelijke vereisten. De meegeleverde storage engines worden gebruikt om de data fysiek op te slaan. [44]

Brighthouse-motor

Het bedrijf Infobright [45] levert de Brighthouse Engine. Het is ontworpen voor datawarehouse- toepassingen en is gericht op het verwerken van bijzonder grote hoeveelheden gegevens. Indexen worden niet ondersteund. De gegevens worden in gecomprimeerde vorm opgeslagen, wat volgens de fabrikant tot 90% van de opslagruimte kan besparen. [46]

Verdeling

Vanaf versie 5.1 kunnen MySQL-tabellen worden gepartitioneerd . Er zijn verschillende soorten partitionering om uit te kiezen. [47]

Range-partitionering

Met bereikpartitionering worden waardebereiken gedefinieerd voor de afzonderlijke partities.

Het voorbeeld maakt een tabel met drie partities. Met deze syntaxis mag de kolom 'regio' alleen waarden bevatten die kleiner zijn dan 30.

 MAAK TABEL 'klant' (
  regio int NIET NULL ,
  nee int NIET NULL ,
  naam char ( 30 ),
  ed datum NIET NULL
)
VERDELING OP bereik ( regio ) (
  PARTITIE p0 WAARDEN MINDER DAN ( 10 ),
  PARTITIE p1 WAARDEN MINDER DAN ( 20 ),
  PARTITIE p2 WAARDEN MINDER DAN ( 30 )
);

De partitionering kan ook worden bepaald door een uitdrukking. De expressie moet als resultaat een geheel getal genereren. Als de laatste partitie is gedefinieerd met de waarde 'maxvalue', kunt u alle gehele getallen invoegen in de kolom 'regio' (voorbeeld hierboven) of alle datumwaarden in de kolom 'ed' (voorbeeld hieronder).

 MAAK TABEL 'klant' (
  regio int NIET NULL ,
  nee int NIET NULL ,
  naam char ( 30 ),
  ed datum NIET NULL
)
VERDELING PER bereik ( jaar ( ed )) (
  PARTITIE p0 WAARDEN MINDER DAN ( 1990 ),
  PARTITIE p1 WAARDEN MINDER DAN ( 2000 ),
  PARTITIE p2 WAARDEN MINDER DAN maxwaarde
);

Lijst partitionering

In het geval van de lijstpartitie worden de waarden afzonderlijk weergegeven.

Voorbeeld:

 MAAK TABEL 'klant' (
  regio int NIET NULL ,
  nee int NIET NULL ,
  naam char ( 30 ),
  ed datum NIET NULL
)
PARTITIE OP lijst ( regio ) (
  PARTITIE p0 WAARDEN IN ( 1 , 3 , 5 ),
  PARTITIE p1 WAARDEN IN ( 2 , 4 , 6 ),
  PARTITIE p2 WAARDEN IN ( 10 , 11 , 12 )
);

Hash-partitionering

Bij hash-partitionering wordt de verdeling van de records over de afzonderlijke partities bepaald door het DBMS. Bij reguliere hash-partitionering wordt de modulo-functie gebruikt als de hash-functie (regio modulo 4). Het heeft als voordeel dat alle gehele getallen in de kolom 'regio' kunnen worden ingevoegd.

 MAAK TABEL 'klant' (
  regio int NIET NULL ,
  nee int NIET NULL ,
  naam char ( 30 ),
  ed datum NIET NULL
)
VERDELING OP hash ( regio ) PARTITIES 4 ;

Er is ook een 'lineaire' hash-partitionering. Hier wordt een andere hash-functie gebruikt.

Sleutelpartitionering

Een hash-functie wordt impliciet gebruikt voor sleutelpartitionering. De primaire sleutel van de tabel wordt gebruikt als invoer voor de functie.

 MAAK TABEL 'klant' (
  geen int NOT NULL primaire sleutel ,
  naam char ( 30 ),
  ed datum NIET NULL
)
PARTITIE DOOR toets () PARTITIES 4 ;

Sleutelpartitionering wordt impliciet gebruikt voor alle tabellen in de NDB- opslagengine. Dit vereenvoudigt de interne coördinatie van de replicatie.

Subpartities

Voor elk type partitie kunnen ook 'Subpartities' worden gedefinieerd. Dit maakt een nog gedetailleerdere uitsplitsing van de gegevens mogelijk.

administratie

Op Linux installeert MySQL zichzelf in de directory / var / lib / mysql / . Onder Windows definieert de gebruiker de opslaglocatie van de gegevensbestanden - de standaard is de map % ProgramFiles% \ MySQL . Basisinstellingen worden gemaakt door de beheerder in het mijn.cnf- bestand.

Opdrachtregelhulpmiddelen

De meegeleverde opdrachtregelclient wordt gebruikt om MySQL-databases te beheren (opdrachten mysql en mysqladmin ). Het scala aan functies omvat ook de volgende opdrachtregelprogramma's :

mysqlimport
kan worden gebruikt als vervanging voor 'LOAD DATA INFILE…'. Durch Angabe von Parametern können sich Benutzer anmelden und das Verhalten des Programms steuern.
mysqldump
kann als Ersatz für 'SELECT * INTO OUTFILE' verwendet werden. Zusätzlich kann die Tabellenstruktur als Dump ausgegeben werden. Durch Angabe von Parametern können sich Benutzer anmelden und das Verhalten des Programms steuern.
perror
zeigt zu Fehlercodes erweiterte Informationen an. Als Parameter wird beim Programmstart der Errorcode benötigt.
mysqlshow
gibt Metadaten zu Datenbanken, Tabellen oder einzelnen Tabellenspalten aus.

Grafische Werkzeuge

Als grafische Verwaltungssoftware bietet Oracle die Software MySQL Workbench an. Sie ist für die Betriebssysteme Windows , macOS und Linux verfügbar.

Eine von vielen Alternativen ist die in der Skriptsprache PHP geschriebene Open-Source-Anwendung phpMyAdmin . Die grafische Benutzeroberfläche lässt sich über einen Browser bedienen. phpMyAdmin wird hauptsächlich zur Verwaltung von MySQL-Datenbanken auf Webservern verwendet, auf denen die einzelnen Benutzer keine Rechte haben, mysql und mysqladmin direkt auszuführen. Zum Erstellen und Verwalten von Backups der Datenbanken auf Webservern werden – wenn keine Rechte für die Ausführung von mysqldump vorliegen – häufig die ebenfalls in PHP geschriebenen Open-Source-Anwendungen phpMyBackupPro oder MySQLDumper eingesetzt.

Lizenz und Support

Für den Vertrieb von MySQL Server verwendet Oracle ein duales Lizenzsystem : Einerseits ist das Programm eine freie Software , die unter der General Public License (GPL) steht, andererseits wird es auch unter einer kommerziellen Lizenz angeboten.

Unterstützung für den Einsatz von MySQL bietet zunächst das offizielle Handbuch. [48] Außerdem gibt es mehrere Foren und IRC -Channels, in denen Fragen kostenlos beantwortet werden.

Daneben bietet Oracle auch kostenpflichtige Support-Lizenzen in drei Leistungsstufen an: MySQL Enterprise Silver, Gold und Platinum. [49] Sie unterscheiden sich in Leistungsumfang und Preis. [50] [51]

Mit MySQL verwandte Produkte

  • Von MySQL wurde das Datenbank-Projekt MariaDB abgespalten, um den für MySQL verwendeten Quellcode weiterhin frei zur Verfügung zu stellen und aktiv weiterzuentwickeln.
  • Im Jahr 2008 folgte mit Drizzle ein weiterer Fork . [52] [53] [54]
  • MySQL Cluster ermöglicht die Installation von MySQL auf einem Computercluster in einer Shared Nothing Architecture .

Literatur

  • Stefan Pröll, Eva Zangerle, Wolfgang Gassler: MySQL: Das Handbuch für Administratoren . Rheinwerk Verlag, 2015, ISBN 978-3-8362-3753-6 .

Weblinks

Commons : MySQL – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

  1. Changes in MySQL 8.0.26 (2021-07-20, General Availability) . 20. Juli 2021 (abgerufen am 20. Juli 2021).
  2. a b c d e Supported Platforms: MySQL Database . (englisch, abgerufen am 28. Juli 2018).
  3. The mysql Open Source Project on Open Hub: Languages Page . In: Open Hub . (englisch, abgerufen am 28. Juli 2018).
  4. The mysql Open Source Project on Open Hub: Languages Page . In: Open Hub . (abgerufen am 19. Juli 2018).
  5. github.com . (abgerufen am 27. September 2017).
  6. www.mysql.com . (abgerufen am 27. September 2017).
  7. Michael Widenius: Michael Widenius interviewed at MySQL Conference 2010. O'Reilly, April 2010, abgerufen am 16. November 2016 (englisch).
  8. DB-Engines Ranking . Abgerufen am 8. September 2013.
  9. Hilfesystem der Version MySQL 5.0 Kapitel 1.3 und 1.4 oder http://dev.mysql.com/doc/refman/5.1/en/history.html
  10. mysql.de
  11. YouTube, Flickr, and Wikipedia to Share their Secrets of Success at the 2007 MySQL Conference & Expo . O'Reilly. 10. April 2007. Abgerufen am 29. September 2012.
  12. MySQL Customers by Industry : Web: Social Networks . Abgerufen am 5. Januar 2012.
  13. Jason Sobel: Keeping Up . In: Facebook Blog . 21. Dezember 2007. Abgerufen am 30. Oktober 2008.
  14. Om Malik: Facebook's Insatiable Hunger for Hardware . GigaOM . 25. April 2008. Abgerufen am 30. Oktober 2008.
  15. Big and Small Data at Twitter: MySQL CE 2011 . myNoSQL . 17. April 2011. Abgerufen am 20. Oktober 2011.
  16. Informationen zu MySQL Embedded Server 5.1 , abgerufen am 27. September 2010
  17. https://www.informatik-aktuell.de/betrieb/datenbanken/mariadb-und-mysql-vergleich-der-features.html Vergleich MySQL und MariaDB
  18. a b Für weitere Details siehe vor allem Sasha Pachev: Understanding MySQL Internals, Chapter 9: Parser and Optimizer, O'Reilly
  19. Die für das Parsing zuständigen Module befinden sich in den Dateien sql/sql_yacc.yy, sql/gen_lex_hash.cc and sql/gen_lex.cc.
  20. Five Questions With Michael Widenius - Founder And Original Developer of MySQL . Opensourcereleasefeed.com. Archiviert vom Original am 13. März 2009. Abgerufen am 8. Juni 2009.
  21. Reference-Manual der Version 4.0 ( Memento des Originals vom 4. April 2013 auf WebCite ) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. @1 @2 Vorlage:Webachiv/IABot/dev.mysql.com
  22. MySQL Reference-Manual der Version 4.1 ( Memento des Originals vom 4. April 2013 auf WebCite ) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. @1 @2 Vorlage:Webachiv/IABot/dev.mysql.com
  23. Sun übernimmt MySQL - News bei TecChannel
  24. Sun kauft MySQL AB ( Memento vom 31. Juli 2008 im Internet Archive )
  25. heise.de
  26. dev.mysql.com ( Memento des Originals vom 17. Februar 2012 im Internet Archive ) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. @1 @2 Vorlage:Webachiv/IABot/dev.mysql.com
  27. Oracle Pressemitteilung: Oracle Completes Acquisition of Sun
  28. a b oracle.com
  29. heise.de
  30. Neuerungen in MySQL 5.6 ( Memento des Originals vom 23. April 2011 im Internet Archive ) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. @1 @2 Vorlage:Webachiv/IABot/dev.mysql.com (englisch), abgerufen am 23. Juni 2012
  31. MariaDB versus MySQL – Kompatibilität . In: MariaDB KnowledgeBase . ( mariadb.com [abgerufen am 8. Februar 2017]).
  32. Press Release: Oracle Announces General Availability of MySQL 5.7 (englisch), abgerufen am 30. August 2017
  33. Doku
  34. pro-linux.de
  35. golem.de
  36. pro-linux.de Slackware wechselt zu MariaDB Von Mirko Lindner, Mo, 25. März 2013, 14:07
  37. blog.wikimedia.org Wikimedia-Foundation wechselt zu MariaDB
  38. zdnet.com
  39. computerworld.com.au
  40. Reference-Manual von MySQL Version 5.0 Kapitel 14. Speicher-Engines und Tabellentypen
  41. golem.de
  42. dev.mysql.com zu Fremdschlüssel-Beschränkungen in MySQL 5.6 . dev.mysql.com. Abgerufen am 1. Februar 2012.
  43. a b Larissa Janssen: Hochleistungs-Datenbanksysteme: Theorie und Praxis , S. 190–191.
  44. ddengine.org ( Memento des Originals vom 10. Mai 2012 im Internet Archive ) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. @1 @2 Vorlage:Webachiv/IABot/www.ddengine.org
  45. Webseite der Firma Infobright in Toronto
  46. Informationen zum Thema Data-Warehouse ( Memento des Originals vom 24. Dezember 2011 im Internet Archive ) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. @1 @2 Vorlage:Webachiv/IABot/www.mysql.de
  47. dev.mysql.com
  48. dev.mysql.com
  49. mysql.de
  50. Angebot an Support-Leistungen von Oracle
  51. Oracle erhöht Preise für MySQL
  52. Artikel "MySQL-Forks und Patches" ( Memento des Originals vom 23. Dezember 2010 im Internet Archive ) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. @1 @2 Vorlage:Webachiv/IABot/www.admin-magazin.de
  53. drizzle.org ( Memento des Originals vom 14. Januar 2013 im Internet Archive ) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. @1 @2 Vorlage:Webachiv/IABot/www.drizzle.org
  54. krow.livejournal.com