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.
|