1/ISAM
ISAM er en veldefinert og velprøvd tilnærming til datatabellhåndtering som er designet slik at databasen blir spørret mye oftere enn den oppdateres. Som et resultat utfører ISAM lesinger raskt og bruker ikke mye minne og lagringsressurser. De to største ulempene med ISAM er at den ikke støtter transaksjonsbehandling og ikke er feiltolerant: hvis harddisken din krasjer, kan ikke datafilene gjenopprettes. Hvis du bruker ISAM for kritiske applikasjoner, må du alltid ta backup av all sanntidsdata, og MySQL kan støtte slike sikkerhetskopieringsapplikasjoner takket være replikasjonsfunksjonen.
2/InnoDB
Den tilbyr en transaksjonskontrollfunksjon, som sikrer at et sett med kommandoer utføres vellykket, eller at når en kommandofeil oppstår, rulles resultatet av alle kommandoer tilbake, kan man tenke seg at transaksjonskontroll er svært viktig i e-bankvirksomhet. Støtte for COMMIT, ROLLBACK og andre transaksjonsfunksjoner. Den nyeste versjonen av Mysql planlegger allerede å fjerne støtte for BDB til fordel for InnoDB.
MyIASM er en ny versjon av IASM-tabeller med følgende utvidelser: Portabilitet på binært nivå. NULL-kolonneindeks. Det er færre fragmenter for variable rader enn ISAM-tabeller. Støtte for store filer. Bedre indekskomprimering. Er det bedre å ha en statistisk fordeling? Bedre og raskere auto_increment behandling.
Her er noen detaljer og spesifikke forskjeller i implementeringen:
1. InnoDB støtter ikke indekser av typen FULLTEXT. 2. Tabeller lagres ikke i InnoDB spesifikke rader, det vil si å utføre select count(*) fra InnoDB skanner hele tabellen for å beregne hvor mange rader det er, men MyISAM leser bare opp de lagrede radene. Merk at når count(*)-setningen inneholder hvor betingelsen, er operasjonen til begge tabellene den samme. 3. For felt av AUTO_INCREMENT type må indeksen med kun det feltet inkluderes i InnoDB, men i MyISAM-tabellen er det mulig å lage en føderert indeks med andre felt. 4.DELETE FROM-tabellen, InnoDB gjenskaper ikke tabellen, men sletter den linje for rad. 5. LASTETABELL FRA MASTER-operasjonen fungerer ikke for InnoDB, løsningen er å endre InnoDB-tabellen til MyISAM-tabellen først, importere dataene, og deretter endre den til InnoDB-tabellen, men den er ikke relevant for tabeller som bruker ekstra InnoDB-funksjoner (som fremmednøkler).
I tillegg er radlåsen i en InnoDB-tabell ikke absolutt; hvis MySQL ikke kan bestemme omfanget som skal skannet når en SQL-setning kjøres, vil InnoDB-tabellen også låse hele tabellen, for eksempel oppdatering tabellsett num=1 hvor navn som "a%"
Ingen tabell er allmektig, bare ved å velge riktig tabelltype for forretningstypen kan vi maksimere ytelsesfordelene til MySQL.
MySQL Når administrator oppretter en database, går tabellen som standard over til InnoDB-typen.
InnoDB, MyISAM Hva er forskjellen mellom de to typene: MyISAM-typen støtter ikke avansert prosessering som transaksjonsbehandling, mens InnoDB-typen gjør det. Tabeller av MyISAM-typen legger vekt på ytelse, som presterer flere grader raskere enn InnoDB-typen, men gir ikke transaksjonsstøtte, mens InnoDB tilbyr avanserte databasefunksjoner som transaksjonsstøtte, fremmednøkler osv.
MyISAM-type binære datafiler kan migreres mellom ulike operativsystemer. Det vil si at det kan kopieres direkte fra Windows-systemet til et Linux-system.
Endre motortypen i tabellen:
ALTER TABLE tablename ENGINE = MyISAM ;
MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed Sekvensiell tilgangsmetode Det er standardmetoden for å lagre poster og filer. Sammenlignet med andre lagringsmotorer har MyISAM de fleste verktøy for å sjekke og reparere tabeller. MyISAM-tabeller kan komprimeres, og de støtter fulltekstsøk. De er ikke transaksjonssikre og støtter ikke fremmednøkler. Hvis noe rulles tilbake, vil det føre til ufullstendig tilbakerulling og er ikke atomær. Hvis mange henrettelser utføres TheSELECT, MyISAM er det bedre valget.
InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,
For InnoDB-typer som støtter ting, er hovedårsaken til at hastigheten påvirker hastigheten at standardinnstillingen AUTOCOMMIT er aktivert og programmet ikke eksplisitt kaller BEGIN Start en transaksjon, noe som resulterer i en automatisk commit for hver innsetting, noe som påvirker hastigheten betydelig. Du kan kalle start før SQL kjøres, og flere SQL danner én ting (selv om autocommit treffer kan også slås på), noe som vil forbedre ytelsen betydelig.
1. Se tabellinformasjonen, inkludert type motor som brukes, tegnkoding, tabellstruktur osv
Bruk denne kommandoen
MySQL> vis opprett tabell t1; --t1 er bordnavnet
2. Følgende kommando kan utføres for å bytte ikke-transaksjonelle tabeller til transaksjoner (data går ikke tapt), innodb-tabeller er sikrere enn myisam-tabeller: Alter-tabell T1 type=innodb; --t1 er bordnavnet
3. Innodb-tabellen kan ikke table_name med reparasjonstabell-kommandoen og myisamchk -r Men du kan bruke en sjekktabell t1, og mysqlcheck [OPTIONS] database [tabeller]
4. Følgende parametere er lagt til kommandolinjen for å starte MySQL-databasen, slik at alle nylig utgitte MySQL-datatabeller som standard bruker transaksjoner ( Det påvirker bare create-setningen. ) --default-table-type=InnoDB
5. Midlertidig endring av standard tabelltype kan gjøres ved: sett table_type=InnoDB;
MyISAM Fordeler: høy hastighet, mindre diskplass opptatt; Diskbruken av en database eller tabell kan finnes enten ved å sjekke størrelsen på den tilsvarende filen (mappen) av operativsystemet eller ved å bruke SQL-setningen VIS TABELLSTATUS Ulemper: Ingen mekanisme for dataintegritet, altså ingen støtte for transaksjoner og fremmednøkler
InnoDB Fordeler: Støtter transaksjoner og fremmednøkler, samt fullfører mekanismen for dataintegritet. Du kan bruke SHOW TABLE STATUS for å sjekke diskens belegg i et bibliotek eller en tabell Ulemper: ultralav hastighet, stor diskplass opptatt; Alle biblioteker lagres i én (vanligvis) eller flere filer, og operativsystemet kan ikke si hvor mye plass et bibliotek eller en tabell har
BDB Fordeler: Støtter transaksjoner, men støtter ikke fremmednøkler, fordi på basis av transaksjonsstøtte kan fremmednøkler implementeres indirekte på klientsiden av databasen (som kan være serversiden til sluttkunden, som PHP), så dataintegritet er fortsatt garantert; Ulemper: lav hastighet, høy diskutnyttelse; Du kan ikke spørre om plassopptaket i en database eller tabell via VIS TABELLSTATUS. Operativsystemet kan forstå størrelsen på den tilsvarende mappen i biblioteket eller den tilsvarende filen i tabellen, men fordi BDB-tabellen alltid må generere en loggfil, og den faktiske diskbelegget bør inkludere loggfilen, er størrelsen på et bibliotek eller en tabell alltid mindre enn den faktiske plassen operativsystemet opptar.
|