1/ISAM
ISAM är en väldefinierad och tidsbeprövad metod för hantering av datatabeller som är utformad med databasen som efterfrågas mycket oftare än den uppdateras. Som ett resultat utför ISAM snabba läsningar och tar inte upp mycket minne och lagringsresurser. De två största nackdelarna med ISAM är att den inte stöder transaktionsbehandling och inte är feltolerant: om din hårddisk kraschar kan datafilerna inte återställas. Om du använder ISAM för affärskritiska applikationer måste du alltid säkerhetskopiera all din realtidsdata, och MySQL kan stödja sådana säkerhetskopieringsapplikationer tack vare sin replikeringsfunktion.
2/InnoDB
Den tillhandahåller en transaktionskontrollfunktion, som säkerställer att en uppsättning kommandon utförs framgångsrikt, eller att när ett kommandofel uppstår rullas resultatet av alla kommandon tillbaka kan man föreställa sig att transaktionskontroll är mycket viktig inom e-bank. Stöd för COMMIT, ROLLBACK och andra transaktionsfunktioner. Den senaste versionen av Mysql planerar redan att ta bort stödet för BDB till förmån för InnoDB.
MyIASM är en ny version av IASM-tabeller med följande tillägg: Portabilitet på binär nivå. NULL-kolumnindex. Det finns färre fragment för variabla rader än för ISAM-tabeller. Stöd för stora filer. Bättre indexkompression. Är det bättre att ha en statistisk fördelning? Bättre och snabbare auto_increment bearbetning.
Här är några detaljer och specifika skillnader i implementeringen:
1. InnoDB stöder inte index av typen FULLTEXT. 2. Tabeller sparas inte i InnoDB specifika rader, det vill säga exekverar select count(*) från InnoDB skannar hela tabellen för att räkna ut hur många rader det finns, men MyISAM läser bara upp de sparade raderna. Observera att när count(*)-satsen innehåller där villkoret är operationen för båda tabellerna densamma. 3. För fält av AUTO_INCREMENT typ måste indexet med endast det fältet inkluderas i InnoDB, men i MyISAM-tabellen är det möjligt att skapa ett federerat index med andra fält. 4.RADERA FROM table återskapar inte InnoDB tabellen, utan raderar den rad för rad. 5. LADDA TABELL FRÅN MASTER-operationen fungerar inte för InnoDB, lösningen är att först ändra InnoDB-tabellen till MyISAM-tabellen, importera datan och sedan ändra den till InnoDB-tabellen, men den är inte tillämplig på tabeller som använder ytterligare InnoDB-funktioner (såsom främmande nycklar).
Dessutom är radlåset i en InnoDB-tabell inte absolut; om MySQL inte kan bestämma omfattningen som ska skannas vid exekvering av en SQL-sats, kommer InnoDB-tabellen också att låsa hela tabellen, till exempel vid uppdatering Tabelluppsättning num=1 där namn som "a%"
Ingen tabell är allsmäktig, endast genom att välja lämplig tabelltyp för affärstypen kan vi maximera prestandafördelarna med MySQL.
MySQL När Administratören skapar en databas går tabellen automatiskt till InnoDB-typen.
InnoDB, MyISAM Vad är skillnaden mellan de två typerna: MyISAM-typen stöder inte avancerad bearbetning såsom transaktionshantering, medan InnoDB-typen gör det. Tabeller av MyISAM-typen betonar prestanda, som presterar flera grader snabbare än InnoDB-typen, men ger inte transaktionsstöd, medan InnoDB erbjuder avancerade databasfunktioner såsom transaktionsstöd, främmande nycklar med mera.
MyISAM-typ binära datafiler kan migreras mellan olika operativsystem. Det vill säga, det kan kopieras direkt från Windows-system till Linux-system.
Ändra motortypen i tabellen:
ALTER TABELL tabellnamn ENGINE = MyISAM ;
MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed Sekventiell åtkomstmetod Det är standardmetoden för att lagra poster och filer. Jämfört med andra lagringsmotorer har MyISAM de flesta verktyg för att kontrollera och reparera tabeller. MyISAM-tabeller kan komprimeras och de stöder fulltextsökning. De är inte transaktionssäkert och stöder inte främmande nycklar. Om något rullas tillbaka kommer det att orsaka ofullständig rollback och är inte atomärt. Om ett stort antal avrättningar genomförs TheSELECT, MyISAM är det bättre valet.
InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,
För InnoDB-typer som stödjer saker är huvudorsaken till att det påverkar hastigheten att standardinställningen AUTOCOMMIT är aktiverad och programmet inte uttryckligen anropar BEGIN Starta en transaktion, vilket resulterar i en automatisk commit för varje insättning, vilket allvarligt påverkar hastigheten. Du kan anropa start innan SQL körs, och flera SQL-filer bildar en sak (även om autocommit träffar kan också slås på), vilket kommer att förbättra prestandan avsevärt.
1. Visa tabellinformationen, inklusive vilken typ av motor som används, teckenkodning, tabellstruktur med mera
Använd detta kommando
MySQL> visa skapa tabell t1; --t1 är tabellnamnet
2. Följande kommando kan utföras för att byta icke-transaktionella tabeller till transaktioner (data går inte förlorad), innodb-tabeller är säkrare än myisam-tabeller: Alter-tabell T1 type=innodb; --t1 är tabellnamnet
3. Innodb-tabellen kan inte table_name med reparationstabellkommandot och myisamchk -r Men du kan använda en checktabell t1, och mysqlcheck [OPTIONS] databas [tabeller]
4. Följande parametrar har lagts till i kommandoraden för att starta MySQL-databasen och göra att alla nyligen släppta MySQL-datatabeller automatiskt använder transaktioner ( Det påverkar bara create-satsen. ) --default-table-type=InnoDB
5. Tillfälligt ändrar standardtabellstypen genom att: set table_type=InnoDB;
MyISAM Fördelar: hög hastighet, mindre diskutrymme upptaget; Diskanvändningen av en databas eller tabell kan fastställas antingen genom att kontrollera storleken på motsvarande fil (mapp) av operativsystemet eller genom att använda SQL-satsen VISA TABELLSTATUS Nackdelar: Ingen mekanism för dataintegritet, dvs. inget stöd för transaktioner och främmande nycklar
InnoDB Fördelar: Stöd för transaktioner och främmande nycklar samt fullständig mekanism för dataintegritet. Du kan använda VISA TABELLSTATUS för att kontrollera diskens beläggning i ett bibliotek eller en tabell Nackdelar: ultralångsam hastighet, stort diskutrymme upptaget; Alla bibliotek lagras i en (vanligtvis) eller flera filer, och operativsystemet kan inte avgöra hur mycket utrymme ett bibliotek eller en tabell har
BDB Fördelar: Stöder transaktioner, men stöder inte främmande nycklar, eftersom utländska nycklar kan implementeras indirekt på klientsidan av databasen (som kan vara slutkundens serversida, såsom PHP), så dataintegritet är fortfarande garanterad; Nackdelar: långsam hastighet, hög diskanvändning; Du kan inte fråga om utrymmesupptagningen i en databas eller tabell via VISA TABELLSTATUS. Operativsystemet kan förstå storleken på motsvarande mapp i biblioteket eller motsvarande fil i tabellen, men eftersom BDB-tabellen alltid måste generera en loggfil, och den faktiska diskbeläggningen bör inkludera loggfilen, är storleken på ett bibliotek eller en tabell alltid mindre än det faktiska utrymmet som operativsystemet upptar.
|