1/ISAM
ISAM is een goed gedefinieerde en beproefde benadering van datatafelbeheer die is ontworpen waarbij de database veel vaker wordt bevraagd dan bijgewerkt. Daardoor voert ISAM snel leeswerk uit en neemt het niet veel geheugen en opslagmiddelen in beslag. De twee belangrijkste nadelen van ISAM zijn dat het geen transactieverwerking ondersteunt en niet fouttolerant is: als je harde schijf crasht, kunnen de databestanden niet worden hersteld. Als je ISAM gebruikt voor bedrijfskritische applicaties, moet je altijd al je realtime data back-uppen, en MySQL kan zulke back-upapplicaties ondersteunen dankzij de replicatiefunctie.
2/InnoDB
Het biedt een functie voor transactiecontrole, die ervoor zorgt dat een reeks commando's succesvol wordt uitgevoerd, of dat wanneer een commandofout optreedt, het resultaat van alle commando's wordt teruggedraaid; men kan zich voorstellen dat transactiebeheersing zeer belangrijk is in e-banking. Ondersteuning voor COMMIT, ROLLBACK en andere transactiefuncties. De nieuwste versie van Mysql is al van plan om de ondersteuning voor BDB te verwijderen ten gunste van InnoDB.
MyIASM is een nieuwe versie van IASM-tabellen met de volgende extensies: Portabiliteit op binair niveau. NULL-kolomindex. Er zijn minder fragmenten voor variabele rijen dan voor ISAM-tabellen. Ondersteuning voor grote bestanden. Betere indexcompressie. Is het beter om een statistische verdeling te hebben? Beter en sneller auto_increment verwerking.
Hier zijn enkele details en specifieke verschillen in de implementatie:
1. InnoDB ondersteunt geen indexen van het type FULLTEXT. 2. Tabellen worden niet opgeslagen in InnoDB specifieke rijen, dat wil zeggen, select-count(*) uitvoeren vanaf InnoDB scant de hele tabel om te berekenen hoeveel rijen er zijn, maar MyISAM leest simpelweg de opgeslagen rijen uit. Let op dat wanneer de count(*)-instructie bevat waarbij voorwaarde is, is de werking van beide tabellen hetzelfde. 3. Voor velden van AUTO_INCREMENT type moet de index met alleen dat veld worden opgenomen in InnoDB, maar in de MyISAM-tabel is het mogelijk een gefedereerde index met andere velden te maken. 4.DELETE FROM table, InnoDB maakt de tabel niet opnieuw aan, maar verwijdert deze regel voor rij. 5. LAADTABEL VANAF De MASTER-operatie werkt niet voor InnoDB; de oplossing is om eerst de InnoDB-tabel te wijzigen naar MyISAM-tabel, de gegevens te importeren en deze vervolgens te wijzigen naar de InnoDB-tabel, maar het is niet van toepassing op tabellen die extra InnoDB-functies gebruiken (zoals vreemde sleutels).
Bovendien is de rijvergrendeling van een InnoDB-tabel niet absoluut; als MySQL niet kan bepalen welke scope gescand moet worden bij het uitvoeren van een SQL-instructie, zal de InnoDB-tabel ook de hele tabel vergrendelen, zoals updaten Tabel set num=1 waarbij naam zoals "a%"
Geen enkele tabel is almachtig; alleen door het juiste tabeltype voor het bedrijfstype te kiezen, kunnen we de prestatievoordelen van MySQL maximaliseren.
MySQL Wanneer de Administrator een database aanmaakt, wordt de tabel standaard op het type InnoDB gezet.
InnoDB, MyISAM Wat is het verschil tussen de twee typen: Het MyISAM-type ondersteunt geen geavanceerde verwerking zoals transactieverwerking, terwijl het InnoDB-type dat wel doet. Tabellen van het type MyISAM leggen de nadruk op prestaties, die enkele graden sneller presteert dan het type InnoDB, maar geen transactionele ondersteuning biedt, terwijl InnoDB geavanceerde databasefuncties biedt zoals transactionele ondersteuning, vreemde sleutels, enzovoort.
MyISAM-type binaire databestanden kunnen worden gemigrerd tussen verschillende besturingssystemen. Dat wil zeggen, het kan direct van het Windows-systeem naar het Linux-systeem worden gekopieerd.
Pas het motortype van de tabel aan:
ALTER TABLE tablename ENGINE = MyISAM ;
MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed Sequentiële Toegangsmethode Het is de standaardmethode voor het opslaan van records en bestanden. In vergelijking met andere opslag-engines heeft MyISAM de meeste tools voor het controleren en repareren van tabellen. MyISAM-tabellen kunnen worden gecomprimeerd en ondersteunen full-text search. Ze zijn niet transactioneel veilig en ondersteunen geen vreemde sleutels. Als iets wordt teruggerold, veroorzaakt dat onvolledige rollback en is het niet atomair. Als er veel executies worden uitgevoerd TheSELECT, MyISAM is de betere keuze.
InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,
Voor InnoDB-types die dingen ondersteunen, is de belangrijkste reden dat de snelheid beïnvloedt dat de standaardinstelling AUTOCOMMIT is ingeschakeld en het programma BEGIN niet expliciet aanroept Start een transactie, wat resulteert in een automatische commit voor elke insertie, wat de snelheid ernstig beïnvloedt. Je kunt start aanroepen voordat SQL wordt uitgevoerd, en meerdere SQL vormen één ding (zelfs als autocommit wordt uitgevoerd kan ook worden ingeschakeld), wat de prestaties aanzienlijk zal verbeteren.
1. Bekijk de tabelinformatie, inclusief het type gebruikte engine, tekencodering, tabelstructuur, enzovoort
Gebruik dit commando
MySQL> Toon een tabel aanmaken T1; --t1 is de naam van de tabel
2. Het volgende commando kan worden uitgevoerd om niet-transactionele tabellen om te schakelen naar transacties (data gaat niet verloren), innodb-tabellen zijn veiliger dan myisam-tabellen: Altertabel T1 type=innodb; --t1 is de naam van de tabel
3. De innodb-tabel kan niet worden table_name met het repair table-commando en myisamchk -r Maar je kunt wel een controletafel gebruiken t1, en mysqlcheck [OPTIES] database [tabellen]
4. De volgende parameters zijn toegevoegd aan de opdrachtregel om de MySQL-database te starten, zodat alle nieuw vrijgegeven MySQL-datatabellen standaard transacties gebruiken ( Het beïnvloedt alleen de create-instructie. ) --default-table-type=InnoDB
5. Het tijdelijk wijzigen van het standaard tabeltype kan worden gedaan door: set table_type=InnoDB;
MyISAM Voordelen: hoge snelheid, minder schijfruimte ingenomen; Het schijfgebruik van een database of tabel kan worden bepaald door de grootte van het bijbehorende bestand (map) door het besturingssysteem te controleren of door de SQL-instructie SHOW TABLE STATUS TE GEBRUIKEN Nadelen: Geen dataintegriteitsmechanisme, dus geen ondersteuning voor transacties en vreemde sleutels
InnoDB Voordelen: ondersteuning van transacties en vreemde sleutels, en volledig mechanisme voor gegevensintegriteit. Je kunt SHOW TABLE STATUS gebruiken om de schijfbezetting van een bibliotheek of tabel te controleren Nadelen: ultra-trage snelheid, grote schijfruimte ingenomen; Alle bibliotheken worden opgeslagen in één (meestal) of meerdere bestanden, en het besturingssysteem kan niet bepalen hoeveel ruimte een bibliotheek of tabel heeft
BDB Voordelen: Ondersteuning voor transacties, geen vreemde sleutels, omdat op basis van transactieondersteuning vreemde sleutels indirect aan de clientzijde van de database kunnen worden geïmplementeerd (die de serverzijde van de eindklant kan zijn, zoals PHP), waardoor gegevensintegriteit nog steeds gegarandeerd is; Nadelen: trage snelheid, hoog schijfgebruik; Je kunt de bezetting van de ruimte van een database of tabel niet opvragen via SHOW TABLE STATUS. Het besturingssysteem kan de grootte van de bijbehorende map van de bibliotheek of het bijbehorende bestand van de tabel begrijpen, maar omdat de BDB-tabel altijd een logbestand moet genereren en de daadwerkelijke schijfbezetting het logbestand moet omvatten, is de grootte van een bibliotheek of tabel altijd kleiner dan de daadwerkelijke ruimte die het besturingssysteem inneemt.
|