Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 14231|Відповідь: 1

[Джерело] Різниця між engine=innodb і engine=myisam у mysql

[Копіювати посилання]
Опубліковано 16.07.2017 11:04:57 | | |
1/ISAM

ISAM — це чітко визначений і перевірений часом підхід до управління таблицями даних, який розроблений так, щоб база даних запитувалася значно частіше, ніж оновлювалася. Внаслідок цього ISAM швидко виконує читання і не займає багато пам'яті та ресурсів зберігання. Два основні недоліки ISAM — це відсутність підтримки обробки транзакцій і нестійкість до помилок: якщо жорсткий диск зависає, файли даних не можна відновити. Якщо ви використовуєте ISAM для критично важливих застосунків, завжди потрібно робити резервне копіювання всіх даних у реальному часі, і MySQL підтримує такі резервні програми завдяки функції реплікації.

2/InnoDB

Він забезпечує функцію контролю транзакцій, яка забезпечує успішне виконання набору команд, або, коли трапляється будь-яка помилка команд, результат усіх команд відкотюється; можна припустити, що можливість контролю транзакцій є дуже важливою в електронному банкінгу. Підтримка функцій COMMIT, ROLLBACK та інших транзакцій. Остання версія MySQL вже планує прибрати підтримку BDB на користь InnoDB.

MyIASM — це нова версія таблиць IASM з такими розширеннями:
Портативність на бінарному рівні.
Індекс стовпців NULL.
Для змінних рядків менше фрагментів, ніж для таблиць ISAM.
Підтримка великих файлів.
Краща індексна компресія.
Чи краще мати статистичний розподіл?
Краще і швидше auto_increment обробку.

Ось деякі деталі та конкретні відмінності у реалізації:

1. InnoDB не підтримує індекси типу FULLTEXT.
2. Таблиці не зберігаються в InnoDB
Конкретні рядки, тобто виконати select count(*) з
таблиця, InnoDB сканує всю таблицю, щоб обчислити кількість рядків, але MyISAM просто зчитує збережені рядки. Зверніть увагу, що коли оператор count(*) містить
де умова, робота обох таблиць однакова.
3. Для полів AUTO_INCREMENT типу індекс лише з цим полем має бути включений в InnoDB, але в таблиці MyISAM можливо створити федеративний індекс з іншими полями.
4.ВИДАЛИТИ
З таблиці InnoDB не відтворює таблицю, а видаляє її рядок за рядком.
5.ТАБЛИЦЯ ЗАВАНТАЖЕННЯ З
Операція MASTER не працює для InnoDB, рішення полягає в тому, щоб спочатку змінити таблицю InnoDB на таблицю MyISAM, імпортувати дані, а потім змінити їх у таблицю InnoDB, але вона не застосовується до таблиць, які використовують додаткові функції InnoDB (наприклад, зовнішні ключі).

Крім того, блокування рядків таблиці InnoDB не є абсолютним: якщо MySQL не може визначити область сканування під час виконання SQL-оператора, таблиця InnoDB також заблокує всю таблицю, наприклад оновлення
Table set num=1, де ім'я як "a%"

Жодна таблиця не є всемогутньою, лише обравши відповідний тип таблиці для типу бізнесу, можна максимізувати переваги продуктивності MySQL.

MySQL
Коли Адміністратор створює базу даних, таблиця за замовчуванням набирає тип InnoDB.

InnoDB, MyISAM
У чому різниця між двома типами: тип MyISAM не підтримує розширену обробку, таку як транзакційна обробка, тоді як тип InnoDB підтримує.
Таблиці типу MyISAM акцентують увагу на продуктивності, яка працює на кілька ступенів швидше, ніж тип InnoDB, але не забезпечує транзакційної підтримки, тоді як InnoDB надає розширені функції бази даних, такі як підтримка транзакцій, зовнішні ключі тощо.

Файли бінарних даних типу MyISAM можна мігрувати між різними операційними системами. Тобто його можна скопіювати безпосередньо з Windows на Linux.

Модифікувати тип двигуна таблиці:

ALTER
TABLE TABLE NAME ENGINE = MyISAM ;

MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed
Метод послідовного доступу
Це стандартний метод зберігання записів і файлів. Порівняно з іншими рушіями зберігання, MyISAM має більшість інструментів для перевірки та ремонту таблиць.
Таблиці MyISAM можна стискати, і вони підтримують повнотекстовий пошук. Вони не є транзакційно захищеними і не підтримують зовнішні ключі. Якщо щось відкотиться, це спричинить неповний відкат і не є атомарним. Якщо буде проведено велику кількість страт
TheSELECT, MyISAM — кращий вибір.

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

Для типів InnoDB, які підтримують функції, основна причина впливу на швидкість полягає в тому, що налаштування AUTOCOMMIT за замовчуванням увімкнене, і програма явно не викликає BEGIN
Почніть транзакцію, що призводить до автоматичного фіксації для кожної вставки, що суттєво впливає на швидкість. Ви можете викликати Start до того, як буде виконано SQL, і кілька SQL утворюють одну річ (навіть якщо автокомміт спрацює)
також може бути ввімкнений), що значно покращить продуктивність.

1. Перегляньте інформацію про таблицю, включно з типом двигуна, кодуванням символів, структурою таблиці тощо

Використай цю команду

mysql>
показати, створити таблицю T1; --t1 — це назва таблиці

2.
Можна виконати наступну команду для перемикання нетранзакційних таблиць на транзакції (дані не втрачаються), таблиці innodb є безпечнішими, ніж таблиці myisam:
Змінити таблицю T1
type=innodb; --t1 — це назва таблиці

3.
Таблицю inodb не можна table_name за допомогою команди repair table та myisamchk -r
Але можна використовувати чекову таблицю
t1 та mysqlcheck [OPTIONS] бази даних [таблиці]

4.
До командного рядка додано наступні параметри для запуску бази даних mysql, щоб усі нововипущені таблиці даних mysql за замовчуванням використовували транзакції (
Це впливає лише на заяву create. )
--default-table-type=InnoDB

5.
Тимчасова зміна типу таблиці за замовчуванням може бути здійснена:
set table_type=InnoDB;

MyISAM
Переваги: висока швидкість, менше зайнятого місця на диску; Використання диска бази даних або таблиці можна визначити або перевіривши розмір відповідного файлу (папки) операційною системою, або за допомогою SQL-оператора SHOW TABLE STATUS
Недоліки: Відсутність механізму цілісності даних, тобто відсутність підтримки транзакцій і зовнішніх ключів

InnoDB
Переваги: підтримка транзакцій і зовнішніх ключів, а також повний механізм цілісності даних. Ви можете використовувати SHOW TABLE STATUS, щоб перевірити заповнення диска в бібліотеці або таблиці
Недоліки: наднизька швидкість, великий об'єм на диску; Усі бібліотеки зберігаються в одному (зазвичай) або кількох файлах, і операційна система не може визначити, скільки місця займає бібліотека чи таблиця

BDB
Переваги: Підтримка транзакцій, не підтримує зовнішні ключі, оскільки на основі підтримки транзакцій зовнішні ключі можуть бути реалізовані опосередковано на стороні клієнтської бази даних (яка може бути серверною стороною кінцевого клієнта, наприклад PHP), тому цілісність даних все ще гарантована;
Недоліки: повільна швидкість, високе використання диска; Ви не можете запитувати зайнятість простору бази даних або таблиці через SHOW TABLE STATUS. Операційна система може розуміти розмір відповідної папки бібліотеки або відповідного файлу таблиці, але оскільки таблиця BDB завжди має генерувати файл журналу, а фактична зайнятість диска має включати файл журналу, розмір бібліотеки або таблиці завжди менший за фактичний простір, зайнятий операційною системою.




Попередній:Атрибути типу полів таблиці MySQL детально пояснюються
Наступний:Інструмент доступу до бази даних php Medoo
 Орендодавець| Опубліковано 16.07.2017 11:09:29 |
//更改引擎
alter table table name engine = MyISAM;

Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com