Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 14231|Odpowiedź: 1

[Źródło] Różnica między engine=innodb a engine=myisam w mysql

[Skopiuj link]
Opublikowano 16.07.2017 11:04:57 | | |
1/ISAM

ISAM to dobrze zdefiniowane i sprawdzone podejście do zarządzania tabelami danych, zaprojektowane tak, aby baza danych była zapytywana znacznie częściej niż aktualizowana. W rezultacie ISAM wykonuje odczyty szybko i nie zajmuje dużo pamięci oraz zasobów pamięciowych. Dwie główne wady ISAM to brak obsługi przetwarzania transakcji i brak odporności na błędy: jeśli dysk twardy się zawiesi, pliki danych nie mogą zostać odzyskane. Jeśli używasz ISAM do aplikacji krytycznych dla misji, zawsze musisz robić kopię zapasową wszystkich danych w czasie rzeczywistym, a MySQL może wspierać takie aplikacje kopii zapasowych dzięki funkcji replikacji.

2/InnoDB

Zapewnia funkcję kontroli transakcji, która gwarantuje, że zestaw poleceń zostanie pomyślnie wykonany, lub gdy wystąpi błąd polecenia, wynik wszystkich poleceń jest cofnięty, można sobie wyobrazić, że możliwość kontroli transakcji jest bardzo ważna w bankowości elektronicznej. Wsparcie dla COMMIT, ROLLBACK i innych funkcji transakcyjnych. Najnowsza wersja Mysql już planuje usunąć wsparcie dla BDB na rzecz InnoDB.

MyIASM to nowa wersja tabel IASM z następującymi rozszerzeniami:
Mobilność na poziomie binarnym.
Indeks kolumny NULL.
Fragmentów wierszy zmiennych jest mniej niż tabel ISAM.
Wsparcie dla dużych plików.
Lepsza kompresja indeksu.
Czy lepiej mieć rozkład statystyczny?
Lepsze i szybsze auto_increment przetwarzanie.

Oto kilka szczegółów i konkretnych różnic w implementacji:

1. InnoDB nie obsługuje indeksów typu FULLTEXT.
2. Tabele nie są zapisywane w InnoDB
Konkretne wiersze, czyli wykonaj select count(*) z
tabeli, InnoDB skanuje całą tabelę, aby obliczyć, ile wierszy jest w środku, ale MyISAM po prostu odczytuje zapisane wiersze. Zauważ, że gdy instrukcja count(*) zawiera
gdzie warunek – działanie obu tabel jest takie samo.
3. Dla pól AUTO_INCREMENT typu indeks zawierający tylko to pole musi być uwzględniony w InnoDB, ale w tabeli MyISAM można utworzyć federowany indeks z innymi polami.
4. USUŃ
Z tabeli InnoDB nie odtwarza tabeli, lecz usuwa ją linia po wierszu.
5. TABELA ŁADOWANIA Z
Operacja MASTER nie działa dla InnoDB, rozwiązaniem jest najpierw zmiana tabeli InnoDB na tabelę MyISAM, import danych, a następnie zmiana na tabelę InnoDB, ale nie jest stosowalna do tabel wykorzystujących dodatkowe funkcje InnoDB (takie jak klucze obce).

Dodatkowo, blokada wiersza tabeli InnoDB nie jest absolutna; jeśli MySQL nie może określić zakresu do przeskanowania podczas wykonywania instrukcji SQL, tabela InnoDB również zablokuje całą tabelę, na przykład w przypadku aktualizacji
zestaw stołowy num=1, gdzie nazwa taka jak "a%"

Żadna tabela nie jest wszechmocna, tylko wybierając odpowiedni typ tabeli dla typu biznesowego, możemy zmaksymalizować korzyści wydajnościowe MySQL.

MySQL
Gdy administrator tworzy bazę danych, tabela domyślnie przyjmuje typ InnoDB.

InnoDB,MyISAM
Jaka jest różnica między tymi dwoma typami: Typ MyISAM nie obsługuje zaawansowanego przetwarzania, takiego jak przetwarzanie transakcji, podczas gdy typ InnoDB tak.
Tabele typu MyISAM kładą nacisk na wydajność, która działa o kilka stopni szybciej niż typ InnoDB, ale nie zapewnia wsparcia transakcyjnego, podczas gdy InnoDB oferuje zaawansowane funkcje bazy danych, takie jak wsparcie transakcyjne, klucze obce itp.

Pliki binarne typu MyISAM mogą być migrowane między różnymi systemami operacyjnymi. To znaczy, można go bezpośrednio skopiować z systemu Windows na system Linux.

Zmodyfikuj typ silnika tabeli:

ALTER
TABLE TABLE TABLENAME ENGINE = MyISAM ;

MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed
Metoda dostępu sekwencyjnego
Jest to standardowa metoda przechowywania rekordów i plików. W porównaniu z innymi silnikami pamięci masowej, MyISAM ma większość narzędzi do sprawdzania i naprawy tabel.
Tabele MyISAM można kompresować i obsługują wyszukiwanie w pełnym tekście. Nie są one bezpieczne transakcyjnie i nie obsługują kluczy obcych. Jeśli coś zostanie cofnięte, spowoduje to niepełne cofnięcie i nie jest atomowe. Jeśli przeprowadza się dużą liczbę egzekucji
TheSELECT, MyISAM to lepszy wybór.

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

W przypadku typów InnoDB, które obsługują różne rzeczy, głównym powodem wpływu na szybkość jest to, że domyślne ustawienie AUTOCOMMIT jest włączone i program nie wywołuje BEGIN wprost
Rozpocznij transakcję, co skutkuje automatycznym zatwierdzeniem przy każdym wstawieniu, co poważnie wpływa na szybkość. Możesz wywołać start zanim SQL zostanie wykonany, a kilka SQL tworzy jedną rzecz (nawet jeśli zadziała autocommit
można też włączyć), co znacznie poprawi wydajność.

1. Zobacz informacje w tabeli, w tym typ użytego silnika, kodowanie znaków, strukturę tabeli itp

Użyj tego polecenia

mysql>
Pokaż Utwórz Tabelę T1; --t1 to nazwa tabeli

2.
Następujące polecenie można wykonać, aby przełączyć tabele nietransakcyjne na transakcje (dane nie są tracone), tabele innodb są bezpieczniejsze niż tabele myisam:
Tabela Alter T1
type=innodb; --t1 to nazwa tabeli

3.
Tablicy innoDB nie da się table_name za pomocą polecenia tabeli naprawczej i myisamchk -r
Ale możesz użyć tabeli kontrolnej
t1 oraz mysqlcheck [OPTIONS] baza danych [tabele]

4.
Do wiersza poleceń dodano następujące parametry, aby uruchomić bazę danych mysql i sprawić, że wszystkie nowo wydane tabele danych mysql domyślnie będą używać transakcji (
Wpływa tylko na polecenie create. )
--default-table-type=InnoDB

5.
Tymczasową zmianę domyślnego typu tabeli można wykonać poprzez:
zestaw table_type=InnoDB;

MyISAM
Zalety: szybka prędkość, mniejsza ilość miejsca na dysku; Wykorzystanie dysku w bazie danych lub tabeli można sprawdzić przez system operacyjny rozmiar odpowiedniego pliku (folderu) lub za pomocą instrukcji SQL SHOW TABLE STATUS
Wady: brak mechanizmu integralności danych, czyli brak wsparcia dla transakcji i kluczy obcych

InnoDB
Zalety: Obsługa transakcji i kluczy obcych oraz kompletny mechanizm integralności danych. Możesz użyć SHOW TABLE STATUS, aby sprawdzić obsadzenie dysku w bibliotece lub tabeli
Wady: ultra-wolna prędkość, duża przestrzeń na dysku; Wszystkie biblioteki są przechowywane w jednym (zazwyczaj) lub kilku plikach, a system operacyjny nie jest w stanie określić, ile miejsca ma dana biblioteka lub tabela

BDB
Zalety: Wspierać transakcje, nie wspierać kluczy obcych, ponieważ na podstawie wsparcia transakcji klucze obce mogą być implementowane pośrednio po stronie klienta bazy danych (która może być po stronie serwera klienta końcowego, np. PHP), więc integralność danych nadal jest gwarantowana;
Wady: niskie prędkości, duże zużycie dysku; Nie można zapytać o zajmowanie przestrzeni w bazie danych ani tabeli przez POKAŻ STATUS TABELI. System operacyjny może zrozumieć rozmiar odpowiadającego folderu biblioteki lub pliku tabeli, ale ponieważ tabela BDB zawsze musi generować plik logu, a faktyczne obsadzenie dysku powinno obejmować plik logu, rozmiar biblioteki lub tabeli jest zawsze mniejszy niż rzeczywiste miejsce zajmowane przez system operacyjny.




Poprzedni:Atrybuty typu pola tabelowego MySQL są szczegółowo wyjaśnione
Następny:Narzędzie dostępu do baz danych php Medoo
 Ziemianin| Opublikowano 16.07.2017 11:09:29 |
//更改引擎
zmieniać nazwę tabeli w silniku = MyISAM;

Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com