MySQL
Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från
versionen som granskades den 14 september 2022; verifiering kräver
1 redigering .
MySQL ( IPA: [maɪ ˌɛskjuːˈɛl] ) är ett gratis hanteringssystem för relationsdatabas [8] . MySQL är utvecklat och stöds av Oracle Corporation , som förvärvat rättigheterna till varumärket tillsammans med det förvärvade Sun Microsystems , som tidigare förvärvat det svenska företaget MySQL AB . Produkten distribueras både under GNU General Public License och under sin egen kommersiella licens. Dessutom skapar utvecklare funktionalitet för licensierade användare. Det var tack vare denna ordning som replikeringsmekanismen dök upp i nästan de tidigaste versionerna .
MySQL är lösningen för små och medelstora applikationer. Ingår i WAMP , AppServ , LAMP - servrar och i portabla sammansättningar av Denver , XAMPP , VertrigoServ-servrar . MySQL används vanligtvis som en server som nås av lokala eller fjärrklienter, men distributionen inkluderar ett internt serverbibliotek som låter dig inkludera MySQL i fristående program.
Flexibiliteten i MySQL DBMS stöds av ett stort antal tabelltyper: användare kan välja mellan MyISAM- tabeller som stöder fulltextsökning och InnoDB- tabeller som stöder transaktioner på nivån för enskilda poster. Dessutom kommer MySQL med en speciell EXEMPEL-tabelltyp som visar hur man skapar nya typer av tabeller. Tack vare sin öppna arkitektur och GPL-licensiering läggs ständigt nya typer av tabeller till MySQL-databasen.
Den 26 februari 2008 förvärvade Sun Microsystems MySQL AB för 1 miljard dollar [9] , den 27 januari 2010 förvärvade Oracle Sun Microsystems för 7,4 miljarder dollar [10] och lade till MySQL till sin DBMS- linje [11] .
MySQL - utvecklargemenskapen har skapat olika delar av koden som DrizzlePercona Server och MariaDB . Alla dessa gafflar fanns redan vid tidpunkten för Suns övertagande av Oracle.
Ursprunget till MySQL
MySQL uppstod som ett försök att tillämpa mSQL på företagets egen utveckling: tabeller för vilka ISAM användes - rutiner på låg nivå. Som ett resultat utvecklades ett nytt SQL -gränssnitt, men API:et ärvdes från mSQL. Var namnet "MySQL" kommer ifrån är inte säkert känt. Utvecklarna ger två alternativ: antingen för att nästan all utveckling av företaget började med prefixet "My ..." (från engelska - "min ..."), eller för att hedra dottern till Myu ( fin. My ) en av utvecklarna av systemet Mikael Widenius [12] [13] .
MySQL delfinlogotypen bär namnet " Sakila ". Det valdes från en stor lista med användarföreslagna "delfinnamn". Namnet " Sakila " skickades in av Open Source - utvecklaren Ambrose Twebaze .
Licensiering
MySQL har dubbla licenser. MySQL kan distribueras under licensvillkor. Men enligt villkoren för GPL, om något program använder MySQL-biblioteken (eller inkluderar annan GPL-kod), måste det också distribueras under GPL-licensen. Detta kan strida mot planerna för utvecklare som inte vill öppna sina program med öppen källkod. För sådana fall tillhandahålls en kommersiell licens, som också ger högkvalitativt servicestöd. För fri programvara tillhandahåller Oracle ett separat undantag från regeln som uttryckligen tillåter att MySQL används och omdistribueras med programvara som är licensierad enligt en Oracle-specificerad lista. [fjorton]
Plattformar
MySQL har porterats till ett stort antal plattformar: AIX , BSDi , FreeBSD , HP-UX , Linux , macOS , NetBSD , OpenBSD , OS/2 Warp, SGI IRIX , Solaris , SunOS , SCO OpenServer , UnixWare , Tru654 , Windows 9 , Windows 98 , Windows NT , Windows 2000 , Windows XP , Windows Server 2003 , WinCE , Windows Vista , Windows 7 och Windows 10 . Det finns också en MySQL-port till OpenVMS . På den officiella webbplatsen för DBMS tillhandahålls inte bara källkoder för gratis nedladdning, utan också färdiga MySQL
DBMS - körbara moduler kompilerade och optimerade för specifika operativsystem .
Programmeringsspråk
MySQL har API :er [15] och kontakter för Delphi , C , C++ , Eiffel , Java , Lisp , Perl , PHP , Python , Ruby , Smalltalk , Component Pascal , Tcl och Lua , bibliotek för .NET- plattformsspråk och ger även support för för ODBC med MyODBC ODBC-drivrutinen .
MyODBC är en ODBC (2.50) nivå 0-drivrutin (med vissa nivå 1- och 2-funktioner) för att ansluta en ODBC-kompatibel applikation till MySQL. MyODBC körs på alla Microsoft Windows -system och på de flesta Unix- plattformar .
Utgivningshistorik
[16] [17] [18] [19] [20] [21] [22]
- Den första interna utgåvan av MySQL ägde rum den 23 maj 1995. .
- En version för Windows-system (Windows 95 och NT) släpptes den 8 januari 1998.
- Version 3.23: beta juni 2000, release januari 2001.
- Version 4.0: beta augusti 2002, släpp mars 2003.
- Version 4.1: beta juni 2004, release oktober 2004.
- Version 5.0: beta mars 2005, release oktober 2005.
- Version 5.1: utvecklad sedan november 2005, släppt i november 2008.
- Version 5.4: April 2009 beta, har inte släppts.
- Version 5.5: släpptes i december 2010.
- Version 5.6: under utveckling (senaste utgåvan - 5.6.50 daterad 2020-10-19). [23]
- Version 5.7: under utveckling (senaste utgåvan - 5.7.32 daterad 2020-10-19). [24]
MySQL 4.0
Även om version 4.0 är föråldrad har den fortfarande betydande distribution. . Huvuddragen i denna version:
- nästan komplett implementering av ANSI SQL-99 plus tillägg;
- plattformsoberoende kompatibilitet;
- oberoende tabelltyper ( MyISAM för snabb läsning, InnoDB för transaktioner och referensintegritet);
- transaktioner ;
- SSL- stöd ;
- query caching ;
- replikering : en masterserver per slav, många slavar per master;
- fulltextindexering och sökning med hjälp av MyISAM-tabelltypen;
- inbäddat databasbibliotek;
- stöd för Unicode ( UTF-8 );
- InnoDB- tabeller för ACID-efterlevnad ;
- en inbäddad server som låter dig inkludera MySQL i fristående applikationer.
MySQL 4.1
Den rekommenderade versionen för 2005 är MySQL 4.1, släppt 27 oktober 2004 . Den innehåller följande innovationer:
- kapslade frågor och härledda tabeller.
- nytt kodnings- och sorteringssystem;
- snabbare och mer flexibelt klient-serverprotokoll med stöd för förberedda frågor, vilket säkerställer att de utförs optimalt;
- nytt installationsprogram och installationsprogram för Microsoft Windows och Linux ;
- klient-server-anslutningar säkrade via OpenSSL ;
- mycket optimerat bibliotek som kan användas i tredjepartsprogram;
- fullt stöd för Unicode (UTF-8 och UCS2);
- standard GIS rumsliga datatyper för lagring av geografisk information;
- förbättrat fulltext sök- och hjälpsystem.
MySQL 5.0
MySQL 5.0 släpptes den 24 oktober 2005 och är en version med avsevärt förbättrad funktionalitet som sätter MySQL i nivå med kommersiella DBMS . Om MySQL tidigare anklagades för otillräckligt stöd för SQL- standarden , så dök upp med tillkomsten av den femte versionen av denna populära databas nästan komplett stöd för SQL-standarden. MySQL 5.0 innehåller följande innovationer:
MySQL 5.1
MySQL 5.1 fortsätter vägen till SQL:2003 -standarden . MySQL 5.1 innehåller följande innovationer [25] [26] .
- Sharding är möjligheten att dela upp ett stort bord i flera delar som finns på olika filsystem baserat på en användardefinierad funktion. Under vissa förutsättningar kan detta ge en betydande prestandahöjning och dessutom gör det det lättare att skala tabeller.
- Beteendet för ett antal satser har ändrats för att vara mer kompatibla med SQL2003-standarden.
- Radbaserad replikering , där endast information om faktiskt ändrade tabellrader kommer att skrivas till den binära loggen istället för den ursprungliga (och möjligen långsamma) frågetexten . Radreplikering kan endast användas för vissa typer av sql-frågor, när det gäller MySQL-mixed replikering .
- Inbyggd schemaläggare för periodiskt lanserade jobb. I syntax liknar det att lägga till en uppgift som att lägga till en trigger i en tabell, i ideologi liknar det crontab .
- Ytterligare en uppsättning funktioner för XML- bearbetning , en implementering av XPath- stöd .
- Nya felsökningsverktyg och prestandaanalysverktyg. Möjligheterna att hantera innehållet i loggfiler har utökats, loggar kan nu sparas i tabellerna general_log och slow_log. Verktyget mysqlslap låter dig utföra lasttestning av databasen med en registrering av svarstiden för varje begäran.
- För att förenkla uppgraderingsoperationen har mysql_upgrade-verktyget förberetts, som kommer att kontrollera alla befintliga tabeller för kompatibilitet med den nya versionen och vid behov göra lämpliga justeringar.
- MySQL Cluster släpps nu som en fristående produkt baserad på MySQL 5.1 och NDBCLUSTER-förrådet.
- Betydande förändringar i driften av MySQL Cluster, som till exempel möjligheten att lagra tabelldata på disk.
- Återgick till att använda det inbyggda libmysqld-biblioteket som saknades i MySQL 5.0.
- API för plugins som låter dig ladda tredjepartsmoduler som utökar funktionaliteten (till exempel fulltextsökning) utan att starta om servern.
- Implementering av fulltextsökparsern som en plug-in.
- Ny tabelltyp Maria (feltolerant klon av MyISAM ).
Maria tabelltyp
Maria (sedan version 5.2.x - Aria) är en utökad version av MyISAM- förvaret , med tillägg av sätt att upprätthålla dataintegritet efter en krasch.
De viktigaste fördelarna med Maria [27] :
- I händelse av en krasch rullas resultaten av den aktuella operationen tillbaka eller återgår till läget före kommandot LOCK TABLES. Implementering genom loggning.
- Möjlighet att återställa tillstånd var som helst i aktivitetsloggen, inklusive stöd för CREATE/DROP/RENAME/TRUNCATE. Kan användas för att skapa inkrementella säkerhetskopior genom att periodiskt kopiera aktivitetsloggen.
- Stöd för alla MyISAM-kolumnformat, utökat med ett nytt "rader-i-block"-format som använder ett paginerat sätt att lagra data, där data i kolumner kan cachelagras.
- I framtiden kommer två lägen att implementeras: transaktionella och utan reflektion i transaktionsloggen, för icke-kritiska data.
- Datasidans storlek är 8 KB (i MyISAM 1 KB), vilket gör att du kan uppnå bättre prestanda för index på fält med fast storlek, men långsammare vid indexering av nycklar med variabel längd.
MySQL 5.5
MySQL 5.5-grenen bygger på den outgivna MySQL 5.4-serien och innehåller ett antal betydande skalbarhets- och prestandaförbättringar, inklusive:
- Använder standard InnoDB-motorn.
- Stöd för en semisynkron replikeringsmekanism baserad på patchar till InnoDB från Google.
- Förbättring av datapartitioneringsfunktioner. Utökad syntax för att dela upp stora tabeller i flera delar som finns i filsystem (partitionering). Lade till RANGE, LIST operationer och "partition pruning" optimeringsmetod.
- Ny optimeringsmekanism för kapslade frågor och JOIN-operationer.
- Det interna blockeringssystemet har designats om.
- Integrerade Google-patchar med InnoDB-optimering på processorer med ett stort antal kärnor.
MySQL 6.0
MySQL 6.0 har frysts i alfatestning. Inledningsvis beslutades det att skapa version 5.2, snart döptes denna version om till 6.0. Men senare försvann MySQL 6.0-informationen från webbplatsen, och utvecklarna fokuserade på version 5.5 och nästa version 5.6.
En av de viktigaste innovationerna i version 6.0 var den nya bordstypen Falcon , utvecklad som en potentiell ersättning för InnoDB av Innobase , förvärvat av Oracle . I samband med förvärvet av Sun Microsystems av samma Oracle 2010 är Falcons öde fortfarande ifrågasatt.
MySQL 5.7
Den första versionen av MySQL 5.7.1-grenen tillkännagavs den 23 april 2013. MySQL 5.7.8 är anpassad för Debian 8 och Ubuntu 15.04. Den senaste utgåvan är 5.7.32 daterad 2020-10-19. [24]
MySQL 8.0
Version 8.0.0 släpptes 2016-12-09, men version 8.0.11, släppt 2018-04-19, var officiellt användbar över hela världen. Den senaste versionen är 8.0.22 (release daterad 2020-10-19) [28]
Specifikationer
Maximala tabellstorlekar
Den maximala storleken på tabeller i MySQL 3.22 är upp till 4 gigabyte, i efterföljande versioner finns inga begränsningar.
Storleken på ett bord begränsas av dess typ. I allmänhet är MyISAM- typen begränsad av filstorleksgränsen för operativsystemets filsystem . Till exempel, på NTFS kan denna storlek teoretiskt vara upp till 32 exabyte . När det gäller InnoDB kan en tabell lagras i flera filer som representerar ett enda tabellutrymme . Storleken på den senare kan nå 64 terabyte .
Till skillnad från MyISAM har InnoDB en betydande gräns för antalet kolumner som kan läggas till i en enda tabell. Standardminnets sidstorlek är 16 kilobyte, varav 8123 byte är reserverade för data. Storleken på pekaren till dynamiska fält är 20 byte. Om du använder det dynamiska radformatet ( ROW_FORMAT=DYNAMIC), kan en tabell innehålla maximalt 409 kolumner av typen blobeller text.
Lokalisering
Från och med version 4.1 har ett nytt system med kodningar och sammanställningar implementerats i MySQL DBMS . När du använder Windows-1251-kodningen, innan du kör SQL-satser, måste du konfigurera anslutningskodningen med hjälp av operatorerna:
SET character_set_client = 'cp1251' ;
SET character_set_results = 'cp1251' ;
SET character_set_connection = 'cp1251' ;
Dessa tre påståenden är likvärdiga med att anropa ett enda påstående:
SETNAMN ' cp1251 '
Variabeln character_set_clientställer in kodningen av data som skickas från klienten, variabeln character_set_resultsställer in kodningen av data som skickas till klienten, variabeln character_set_connectionställer in kodningen till vilken informationen som mottas från klienten konverteras innan begäran exekveras på servern.
När du använder Unicode UTF-8 ser detta uttalande ut så här:
SET NAME 'utf8mb4'
ISO 8859-5- kodning stöds inte.
Problemet med Unicode
MySQL tillåter inte korrekt användning av reguljära uttryck (REGEXP- och RLIKE-operatorer) på strängar i multibyte-kodningar, såsom för Unicode (UTF-8) [29] . Om sådana operationer är nödvändiga måste man byta till enkelbyte-kodningar, till exempel ryska Win-1251 eller KOI-8 .
Anteckningar
- ↑ Ändringar i MySQL 8.0.30 (2022-07-26, allmän tillgänglighet) - 2022.
- ↑ Mysql Open Source Project på Open Hub: Languages (engelska) - 2006.
- ↑ Mysql Open Source-projektet på Open Hub: Languages-sidan - 2006.
- ↑ 1 2 3 4 5 Plattformar som stöds: MySQL- databas
- ↑ 1 2 3 4 Plattformar som stöds: MySQL-databas
- ↑ https://github.com/mysql/mysql-server/blob/mysql-8.0.3/COPYING
- ↑ https://www.mysql.com/about/legal/licensing/oem/
- ↑ http://dev.mysql.com/doc/refman/5.7/en/what-is-mysql.html Arkiverad 14 juli 2017 på Wayback Machine 1.3.1. Vad är MySQL? MySQL 5.7 Referensmanual.
- ↑ MySQL :: Observationer av Kaj Arnö @Sun Arkiverad 22 mars 2012. (Engelsk)
- ↑ Oracle to Buy Sun (länk ej tillgänglig) . Hämtad 24 april 2013. Arkiverad från originalet 22 april 2009. (obestämd)
- ↑ Oracle slutför Sun Acquisition Arkiverad 27 januari 2012 på Wayback Machine
- ↑ MySQL. Admin Guide = MySQL. Administratörsguide. - M . : Williams Publishing House , 2005. - S. 624 . — ISBN 5-8459-0805-1 .
- ↑ [ Historia om MySQL ] . Hämtad 25 mars 2008. Arkiverad från originalet 31 augusti 2009. (obestämd) MySQL historia _
- ↑ Undantag för FOSS-licens . Hämtad 6 maj 2016. Arkiverad från originalet 15 maj 2016. (obestämd)
- ↑ MySQL :: MySQL 8.0 Referensmanual :: 28 anslutningar och API:er . dev.mysql.com. Hämtad 15 april 2019. Arkiverad från originalet 5 april 2019. (obestämd)
- ↑ B.3. Ändringar i version 3.23.x (Lifecycle Support avslutad) (död länk) . Orakel. Hämtad 24 augusti 2010. Arkiverad från originalet 4 april 2013.
(obestämd)
- ↑ B.2. Ändringar i version 4.0.x (livscykelsupport avslutad) (död länk) . Orakel. Hämtad 24 augusti 2010. Arkiverad från originalet 4 april 2013. (obestämd)
- ↑ B.1. Ändringar i version 4.1.x (livscykelsupport avslutad) (död länk) . Orakel. Hämtad 24 augusti 2010. Arkiverad från originalet 4 april 2013. (obestämd)
- ↑ C.1. Ändringar i version 5.0.x (Lifecycle Support Ended) (död länk) . Orakel. Hämtad 24 augusti 2010. Arkiverad från originalet 4 april 2013. (obestämd)
- ↑ C.1. Ändringar i version 5.1.x (Produktion) (nedlänk) . Orakel. Hämtad 24 augusti 2010. Arkiverad från originalet 4 april 2013. (obestämd)
- ↑ C.1. Ändringar i version 5.5.x (produktion) (nedlänk) . Orakel. Hämtad 24 augusti 2010. Arkiverad från originalet 4 april 2013. (obestämd)
- ↑ C.1. Ändringar i version 5.6.x (Utveckling) (inte tillgänglig länk) . Orakel. Hämtad 24 augusti 2010. Arkiverad från originalet 4 april 2013. (obestämd)
- ↑ [Ändringar i MySQL 5.6.50 (2020-10-19, allmän tillgänglighet) Utgivningsmeddelande för MySQL 5.6.50 daterat 2020-10-19]
- ↑ 1 2 MySQL 5.7.32 releasemeddelande daterat 10/19/2020 . Hämtad 16 januari 2021. Arkiverad från originalet 28 februari 2021. (obestämd)
- ↑ Vad är nytt i MySQL 5.1 (nedlänk) . Datum för åtkomst: 13 augusti 2009. Arkiverad från originalet 28 juni 2009. (obestämd)
- ↑ Översikt över innovationer i MySQL 5.1 på ryska . Hämtad 22 december 2008. Arkiverad från originalet 26 december 2008. (obestämd)
- ↑ Översikt över Maria-lagringsfunktioner på opennet.ru . Datum för åtkomst: 7 januari 2009. Arkiverad från originalet den 9 februari 2009. (obestämd)
- ↑ Utgivningsmeddelande för MySQL 8.0.22 daterat 2022-10-19 . Hämtad 16 januari 2021. Arkiverad från originalet 26 februari 2021. (obestämd)
- ↑ "REGEXP- och RLIKE-operatorerna fungerar på ett byte-mässigt sätt, så de är inte multi-byte-säkra och kan ge oväntade resultat med multi-byte teckenuppsättningar." . Datum för åtkomst: 30 juli 2014. Arkiverad från originalet den 29 juli 2014. (obestämd)
Litteratur
- V. Vaswani. MySQL: Användning och administration = MySQL Databas Usage & Administration. - M . : "Piter" , 2011. - 368 sid. - ISBN 978-5-459-00264-5 .
- Steve Swaring, Tim Converse, Joyce Park. PHP och MySQL. The Programmer's Bible 2nd Edition = PHP 6 och MySQL 6 Bible. - M . : "Dialektik" , 2010. - 912 sid. - ISBN 978-5-8459-1640-2 .
- Robert Sheldon, Geoffrey Moyet. MySQL 5: grundkurs = Början av MySQL. - M . : "Dialektik" , 2007. - 880 sid. - ISBN 978-5-8459-1167-4 .
- Kuznetsov Maxim, Simdyanov Igor. MySQL genom exempel. - St Petersburg. : "BHV-Petersburg" , 2008. - S. 952. - ISBN 978-5-9775-0066-1 .
- Paul Dubois. MySQL, 3:e upplagan = MySQL, 3ed. - M . : "Williams" , 2006. - 1168 sid. — ISBN 5-8459-1119-2 .
- Kuznetsov Maxim, Simdyanov Igor. MySQL 5. Original. - St Petersburg. : "BHV-Petersburg" , 2006. - S. 1024. - ISBN 5-94157-928-4 .
- Kuznetsov Maxim, Simdyanov Igor. Handledning MySQL 5. - St. Petersburg. : "BHV-Petersburg" , 2006. - S. 560. - ISBN 5-94157-754-0 .
Länkar
Sun Microsystems (övertaget av Oracle ) |
---|
Utrustning |
|
---|
programvara |
|
---|
Datalagring |
|
---|
Högpresterande datoranvändning |
|
---|
Forskning |
|
---|
Utbildning |
|
---|
gemenskap |
|
---|