See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 14231|Vastuse: 1

[Allikas] Erinevus engine=innodb ja engine=myisam vahel mysql-is

[Kopeeri link]
Postitatud 16.07.2017 11:04:57 | | |
1/ISAM

ISAM on hästi määratletud ja ajaproovitud lähenemine andmetabeli haldamiseks, mis on loodud nii, et andmebaasi päritakse palju sagedamini kui uuendatakse. Seetõttu teostab ISAM lugemisi kiiresti ega võta palju mälu ega salvestusressursse. ISAM-i kaks peamist puudust on see, et see ei toeta tehingute töötlemist ega ole veatluskindel: kui kõvaketas kokku jookseb, ei saa andmefaile taastada. Kui kasutate ISAM-i missioonikriitiliste rakenduste jaoks, peate alati varundama kõik oma reaalajas andmed ning MySQL toetab selliseid varundusrakendusi tänu oma replikatsioonifunktsioonile.

2/InnoDB

See pakub tehingute juhtimise võimekuse funktsiooni, mis tagab, et käskude komplekt täidetakse edukalt või kui tekib käsuviga, taastatakse kõigi käskude tulemus, võib ette kujutada, et tehingute juhtimise võimekus on e-panganduses väga oluline. Toetus COMMIT-ile, ROLLBACK-ile ja teistele tehingufunktsioonidele. Mysql-i uusim versioon plaanib juba BDB toe eemaldamist ja InnoDB kasuks.

MyIASM on IASM tabelite uus versioon järgmiste laiendustega:
Kaasaskantavus binaarsel tasemel.
NULL veeru indeks.
Muutuvate ridade fragmente on vähem kui ISAM tabelites.
Toetus suurtele failidele.
Parem indeksi kokkusurumine.
Kas on parem omada statistilist jaotust?
Parem ja kiirem auto_increment töötlemine.

Siin on mõned detailid ja konkreetsed rakenduse erinevused:

1. InnoDB ei toeta TÄISTEKST tüüpi indekseid.
2. Tabelid ei ole InnoDB-s salvestatud
spetsiifilistele ridadele, st täida select count(*)
Table, InnoDB skaneerib kogu tabeli, et arvutada, mitu ridu on, kuid MyISAM loeb lihtsalt salvestatud read välja. Pane tähele, et kui count(*) väide sisaldab
kus tingimus, on mõlema tabeli toimimine sama.
3. AUTO_INCREMENT tüüpi väljade puhul peab indeks, kus on ainult see väli, olema lisatud InnoDB-sse, kuid MyISAM tabelis on võimalik luua föderaalne indeks koos teiste väljadega.
4.KUSTUTA
FROM tabelist ei loo InnoDB tabelit uuesti, vaid kustutab selle rida-realt.
5. LAADI TABEL
MASTER operatsioon InnoDB puhul ei tööta, lahendus on esmalt muuta InnoDB tabel MyISAM tabeliks, importida andmed ja seejärel muuta need InnoDB tabeliks, kuid see ei kehti tabelitele, mis kasutavad täiendavaid InnoDB funktsioone (näiteks võõrvõtmed).

Lisaks ei ole InnoDB tabeli realukustus absoluutne, kui MySQL ei suuda SQL-lause täitmisel määrata, millise ulatuse skaneeritakse, lukustab InnoDB tabel ka kogu tabeli, näiteks update
tabeli komplekt num=1, kus nimi nagu "a%"

Ükski tabel ei ole kõikvõimas, ainult õige tabelitüübi valimisega saame maksimeerida MySQL-i jõudluseeliseid.

MySQL
Kui administraator loob andmebaasi, muutub tabel vaikimisi InnoDB tüübiks.

InnoDB, MyISAM
Mis on nende kahe tüübi vahel: MyISAM tüüp ei toeta keerukamat töötlemist, nagu tehingute töötlemine, samas kui InnoDB tüüp toetab.
MyISAM tüüpi tabelid rõhutavad jõudlust, mis töötab mitu kraadi kiiremini kui InnoDB tüüp, kuid ei paku tehingulist tuge, samas kui InnoDB pakub arenenud andmebaasi funktsioone nagu tehingutugi, võõrvõtmed jne.

MyISAM tüüpi binaarandmefaile saab migreerida erinevate operatsioonisüsteemide vahel. See tähendab, et seda saab otse Windowsi süsteemist Linuxi kopeerida.

Muuda tabeli mootori tüüpi:

ALTER
TABELI tabelinimi ENGINE = MyISAM ;

MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed
Järjestikuse ligipääsu meetod
See on standardne meetod dokumentide ja failide salvestamiseks. Võrreldes teiste salvestusmootoritega on MyISAM-il enamik tööriistu tabelite kontrollimiseks ja parandamiseks.
MyISAM tabeleid saab tihendada ning need toetavad täisteksti otsingut. Need ei ole tehinguliselt turvalised ega toeta võõrvõtmeid. Kui midagi keritakse tagasi, põhjustab see ebatäielikku tagasipööramist ja ei ole aatomiline. Kui viiakse läbi suur hulk hukkamisi
TheSELECT, MyISAM on parem valik.

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

InnoDB tüüpide puhul, mis toetavad asju, on peamine kiiruse mõjutav põhjus see, et AUTOCOMMIT vaikeseade on sisse lülitatud ja programm ei kutsu BEGIN-i otseselt
Alusta tehingut, mis toob iga lisamise eest automaatse kohustuse, mis mõjutab oluliselt kiirust. Sa võid kutsuda start enne SQL käivitamist ja mitu SQL-i moodustavad ühe asja (isegi kui automaatne kinnitamine tabab
saab ka sisse lülitada), mis parandab oluliselt jõudlust.

1. Vaata tabeli infot, sealhulgas kasutatud mootori tüüpi, tähemärgi kodeeringut, tabeli struktuuri jne

Kasuta seda käsku

MySQL>
näita loo tabel t1; --t1 on tabeli nimi

2.
Järgmist käsku saab täita, et muuta mitte-tehingulised tabelid tehinguteks (andmed ei kao), innodb tabelid on myisam tabelitest turvalisemad:
Muuda tabel T1
type=innodb; --t1 on tabeli nimi

3.
Innodb tabelit ei saa table_name parandustabeli käsuga ja myisamchk -r
Aga sa võid kasutada kontrolltabelit
t1 ja mysqlcheck [OPTIONS] andmebaas [tabelid]

4.
Järgmised parameetrid on lisatud käsureale, et käivitada mysql andmebaas, et kõik äsja avaldatud mysql andmetabelid kasutaksid vaikimisi tehinguid (
See mõjutab ainult create'i lauset. )
--default-table-type=InnoDB

5.
Vaikimisi tabeli tüübi ajutiseks muutmiseks saab toimuda järgmiselt:
komplekt table_type=InnoDB;

MyISAM
Eelised: kiire kiirus, vähem kettaruumi; Andmebaasi või tabeli kettakasutust saab leida kas operatsioonisüsteemi kontrollides vastava faili (kausta) suurust või kasutades SQL-lauset SHOW TABLE STATUS
Miinused: puudub andmete terviklikkuse mehhanism, st ei toeta tehinguid ega võõrvõtmeid

InnoDB
Eelised: Toetavad tehinguid ja võõrvõtmeid ning täielik andmete terviklikkuse mehhanism. Saate kasutada NÄITA TABELI OLEKUT, et kontrollida raamatukogu või tabeli ketta hõivatust
Puudused: üliaeglane kiirus, suur kettaruum; Kõik teegid on salvestatud ühte (tavaliselt) või mitmesse faili ning operatsioonisüsteem ei suuda öelda, kui palju ruumi raamatukogus või tabelis on

BDB
Eelised: Toetavad tehingud, ei toeta võõrvõtmeid, sest tehingutoe alusel saab võõrvõtmeid kaudselt rakendada andmebaasi kliendipoolsel küljel (mis võib olla lõppkliendi serveripool, näiteks PHP), seega on andmete terviklikkus siiski garanteeritud;
Puudused: aeglane kiirus, kõrge kettakasutus; Sa ei saa pärida andmebaasi või tabeli ruumi hõivatust läbi NÄITA TABELI OLEKUT. Operatsioonisüsteem suudab mõista vastava raamatukogu kausta või tabeli vastava faili suurust, kuid kuna BDB tabel peab alati genereerima logifaili ja tegelik ketta hõivatus peaks sisaldama logifaili, on teegi või tabeli suurus alati väiksem kui operatsioonisüsteemi tegelik ruum.




Eelmine:MySQL tabeli välja tüübi atribuute selgitatakse üksikasjalikult
Järgmine:php andmebaasi ligipääsu tööriist Medoo
 Üürileandja| Postitatud 16.07.2017 11:09:29 |
//更改引擎
alter table table name engine = MyISAM;

Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com