Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 14231|Svar: 1

[Kilde] Forskellen mellem engine=innodb og engine=myisam i mysql

[Kopier link]
Opslået på 16/07/2017 11.04.57 | | |
1/ISAM

ISAM er en veldefineret og tidstestet tilgang til datatabelhåndtering, der er designet med, at databasen bliver forespurgt meget oftere, end den opdateres. Som følge heraf udfører ISAM læsninger hurtigt og bruger ikke meget hukommelse og lagringsressourcer. De to største ulemper ved ISAM er, at den ikke understøtter transaktionsbehandling og ikke er fejltolerant: hvis din harddisk crasher, kan datafilerne ikke gendannes. Hvis du bruger ISAM til missionkritiske applikationer, skal du altid tage backup af alle dine realtidsdata, og MySQL kan understøtte sådanne backup-applikationer takket være sin replikationsfunktion.

2/InnoDB

Den tilbyder en transaktionskontrolfunktion, som sikrer, at et sæt kommandoer udføres korrekt, eller at når en kommandofejl opstår, rulles resultatet af alle kommandoer tilbage; man kan forestille sig, at transaktionskontrol er meget vigtig i e-banking. Understøttelse af COMMIT, ROLLBACK og andre transaktionsfunktioner. Den nyeste version af Mysql planlægger allerede at fjerne understøttelse af BDB til fordel for InnoDB.

MyIASM er en ny version af IASM-tabeller med følgende udvidelser:
Portabilitet på binært niveau.
NULL kolonneindeks.
Der er færre fragmenter for variable rækker end for ISAM-tabeller.
Understøttelse af store filer.
Bedre indekskompression.
Er det bedre at have en statistisk fordeling?
Bedre og hurtigere auto_increment behandling.

Her er nogle detaljer og specifikke forskelle i implementeringen:

1. InnoDB understøtter ikke indekser af typen FULLTEXT.
2. Tabeller gemmes ikke i InnoDB
specifikke rækker, det vil sige udfører vælg tælling(*) fra
InnoDB scanner hele tabellen for at beregne, hvor mange rækker der er, men MyISAM læser blot de gemte rækker op. Bemærk, at når count(*)-sætningen indeholder
hvor betingelsen er, at operationen af begge tabeller er den samme.
3. For felter af AUTO_INCREMENT type skal indekset med kun det felt inkluderes i InnoDB, men i MyISAM-tabellen er det muligt at oprette et fødereret indeks med andre felter.
4.DELETE
FROM table, genskaber InnoDB ikke tabellen, men sletter den linje for række.
5. INDLÆSNINGSTABEL FRA
MASTER-operationen virker ikke for InnoDB, løsningen er først at ændre InnoDB-tabellen til MyISAM-tabellen, importere dataene og derefter ændre det til InnoDB-tabellen, men den er ikke anvendelig for tabeller, der bruger yderligere InnoDB-funktioner (såsom fremmednøgler).

Derudover er rækkelåsen i en InnoDB-tabel ikke absolut; hvis MySQL ikke kan bestemme omfanget ved udførelse af en SQL-sætning, vil InnoDB-tabellen også låse hele tabellen, såsom opdatering
Bordsæt num=1 hvor navn som "a%"

Ingen tabel er almægtig, kun ved at vælge den passende tabeltype til forretningstypen kan vi maksimere MySQL's ydelsesfordele.

MySQL
Når Administrator opretter en database, vælger tabellen som standard InnoDB-typen.

InnoDB, MyISAM
Hvad er forskellen mellem de to typer: MyISAM-typen understøtter ikke avanceret behandling såsom transaktionsbehandling, mens InnoDB-typen gør.
Tabeller af MyISAM-typen lægger vægt på ydeevne, som yder flere grader hurtigere end InnoDB-typen, men ikke tilbyder transaktionsunderstøttelse, mens InnoDB tilbyder avancerede databasefunktioner såsom transaktionsunderstøttelse, fremmednøgler osv.

MyISAM-type binære datafiler kan migreres på tværs af forskellige operativsystemer. Det vil sige, det kan kopieres direkte fra Windows-systemet til et Linux-system.

Ændr motortypen i tabellen:

ALTER
TABLE tablename ENGINE = MyISAM ;

MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed
Sekventiel adgangsmetode
Det er standardmetoden til opbevaring af poster og filer. Sammenlignet med andre lagringsmotorer har MyISAM de fleste værktøjer til kontrol og reparation af tabeller.
MyISAM-tabeller kan komprimeres, og de understøtter fuldtekstsøgning. De er ikke transaktionsmæssigt sikre og understøtter ikke fremmednøgler. Hvis noget rulles tilbage, vil det forårsage ufuldstændig rollback og er ikke atomar. Hvis der udføres et stort antal henrettelser
TheSELECT, MyISAM er det bedre valg.

InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,

For InnoDB-typer, der understøtter ting, er hovedårsagen til hastigheden, at standardindstillingen AUTOCOMMIT er slået til, og programmet kalder ikke eksplicit BEGIN
Start en transaktion, hvilket resulterer i en automatisk commit for hver indsættelse, hvilket alvorligt påvirker hastigheden. Du kan kalde start før SQL bliver udført, og flere SQL danner én ting (selv hvis autocommit rammer
kan også slås til), hvilket vil forbedre ydeevnen markant.

1. Se tabelinformationen, inklusive typen af brugt motor, tegnkodning, tabelstruktur osv

Brug denne kommando

MySQL>
vis Opret tabel T1; --t1 er bordnavnet

2.
Følgende kommando kan udføres for at skifte ikke-transaktionelle tabeller til transaktioner (data går ikke tabt), innodb-tabeller er mere sikre end myisam-tabeller:
Altertabel T1
type=innodb; --t1 er bordnavnet

3.
Innodb-tabellen kan ikke table_name med reparationsbord-kommandoen og myisamchk -r
Men du kan bruge en checktabel
t1 og mysqlcheck [OPTIONS] database [tabeller]

4.
Følgende parametre er tilføjet til kommandolinjen for at starte MySQL-databasen, så alle nyligt frigivne MySQL-datatabeller som standard bruger transaktioner (
Det påvirker kun create-sætningen. )
--default-table-type=InnoDB

5.
Midlertidig ændring af standardtabeltypen kan gøres ved:
sæt table_type=InnoDB;

MyISAM
Fordele: høj hastighed, mindre diskplads optaget; Diskbrugen af en database eller tabel kan findes enten ved at kontrollere størrelsen på den tilsvarende fil (mappe) af operativsystemet eller ved at bruge SQL-sætningen VIS TABEL STATUS
Ulemper: Ingen dataintegritetsmekanisme, dvs. ingen understøttelse af transaktioner og fremmednøgler

InnoDB
Fordele: Understøttelse af transaktioner og fremmednøgler samt komplet dataintegritetsmekanisme. Du kan bruge VIS TABELSTATUS til at tjekke diskbelægningen i et bibliotek eller en tabel
Ulemper: ultra-langsom hastighed, stor diskplads optaget; Alle biblioteker gemmes i én (normalt) eller flere filer, og operativsystemet kan ikke afgøre, hvor meget plads et bibliotek eller en tabel har

BDB
Fordele: Understøtter transaktioner, understøtter ikke fremmednøgler, fordi fremmednøgler på baggrund af transaktionsunderstøttelse kan implementeres indirekte på klientsiden af databasen (som kan være serversiden af slutkunden, såsom PHP), så dataintegritet er stadig garanteret;
Ulemper: lav hastighed, høj diskforbrug; Du kan ikke forespørge pladsbelægningen i en database eller tabel via VIS TABELLESTATUS. Operativsystemet kan forstå størrelsen på den tilsvarende mappe i biblioteket eller den tilsvarende fil i tabellen, men fordi BDB-tabellen altid skal generere en logfil, og den faktiske diskbesættelse bør inkludere logfilen, er størrelsen af et bibliotek eller en tabel altid mindre end den faktiske plads, operativsystemet optager.




Tidligere:MySQL-tabelfelttypeattributter forklares i detaljer
Næste:php databaseadgangsværktøj Medoo
 Udlejer| Opslået på 16/07/2017 11.09.29 |
//更改引擎
alter table table name engine = MyISAM;

Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com