Mysql
 sql >> база данни >  >> RDS >> Mysql

Ъгъл на базата данни:Ръководство за начинаещи за системите за съхранение на Mysql

Когато се създава база данни, един често пренебрегван, но критичен фактор за производителността е механизмът за съхранение (особено с нарастването на базата данни). В много случаи изкушението е просто да приемете по подразбиране и да продължите да развивате своя проект. Това може да доведе до неочаквани отрицателни въздействия върху производителността, архивирането и целостта на данните по-късно в жизнения цикъл на приложението, като например когато екипът ви внедрява анализи и MySQL табла за управление.

За да избегнем тези потенциални клопки, ще разгледаме по-отблизо някои от най-широко използваните машини за съхранение, поддържани от MySQL (от версия 5.7).

Поддържани двигатели за съхранение

Какви са моите опции?

По подразбиране MySQL 5.7 поддържа десет механизма за съхранение (InnoDB, MyISAM, Memory, CSV, Archive, Blackhole, NDB, Merge, Federated и Example). За да видите кои са налични и поддържани от вашия сървър, използвайте тази команда:

mysql> ПОКАЖИ ДВИГАТЕЛИ\G

Това ще изведе списък с двигатели за съхранение и ще ви каже кои са налични, не са налични или кои в момента са зададени по подразбиране. Колоната „Поддръжка:“ ще показва съответно „ДА“, „НЕ“ или „ПО ПОДРАЗБИРАНЕ“.

В някои приложения може да възникне необходимостта от различни машини за съхранение за различни таблици в една и съща база данни. Това е пример защо трябва внимателно да планирате модела на данни за вашето приложение. В повечето случаи обаче ще е необходима само една машина за съхранение.

Възможности на системата за съхранение

В какво са добри?

Нека разгледаме по-отблизо някои от най-често използваните машини за съхранение. Това ще ни даде представа за това какво е проектиран да прави всеки двигател и как най-добре може да се използва за обслужване на нашите бизнес цели.

InnoDB: Опцията по подразбиране в MySQL 5.7, InnoDB е стабилна машина за съхранение, която предлага:

  • Пълно съответствие с ACID
  • Отвързване, връщане назад и възстановяване при срив
  • Заключване на ниво ред
  • Ограничения за референтна цялост на ВЪНШИЯ КЛЮЧ
  • Увеличете едновременността на много потребители (чрез незаключващи четения)

С горната функционалност, която InnoDB предлага, е очевидно защо това е машината по подразбиране в MySQL. Това е двигател, който работи добре и предлага много от необходимите атрибути, от които всяка база данни ще се нуждае. Въпреки това, изчерпателното обсъждане на всичките му възможности е извън обхвата на тази статия. Това е двигателят, който най-вероятно ще се използва в повечето приложения.

MYISAM: Функционалността, която отличава MyISAM, е неговата способност за:

  • индекси за пълно текстово търсене
  • заключване на ниво таблица
  • липса на поддръжка за транзакции

Въпреки че е бърз механизъм за съхранение, той е най-подходящ за използване в приложения с голямо натоварване и предимно четене, като например съхранение на данни и уеб приложения, които не се нуждаят от поддръжка на транзакции или съответствие с ACID.

NDB (или NDBCLUSTER):Ако вашата база данни ще работи в клъстерирана среда, NDB е избраната машина за съхранение. Най-добре е, когато имате нужда от:

  • Разпределени изчисления
  • Висока степен на резервиране
  • Висока наличност
  • Най-високото възможно време на работа

Обърнете внимание, че поддръжката за NDB не е включена в разпространението на стандартни двоични файлове на MySQL Server 5.7. Ще трябва да актуализирате до най-новата двоична версия на MySQL Cluster. Въпреки това, ако се развивате в клъстерна среда, вероятно имате необходимия опит, за да се справите с тези задачи.

CSV: Полезен механизъм за съхранение, когато данните трябва да се споделят с други приложения, които използват форматирани в CSV данни. Таблиците се съхраняват като текстови файлове със стойности, разделени със запетая. Въпреки че това прави споделянето на данни със скриптове и приложения по-лесно, един недостатък е, че CSV файловете не се индексират. Така че данните трябва да се съхраняват в таблица на InnoDB до етапа на импортиране/експортиране на процеса.

Черна дупка: Този двигател приема, но не съхранява данни. Подобно на UNIX /dev/null, заявките винаги връщат празен набор. Това може да бъде полезно в среда на разпределена база данни, където не искате да съхранявате данни локално, в производителност или други ситуации на тестване.

Архив: Точно както подсказва името, този двигател е отличен за рядко препращани исторически данни. Таблиците не са индексирани и компресирането се случва при вмъкване. Транзакциите не се поддържат. Използвайте тази машина за съхранение за архивиране и извличане на минали данни.

Федерирано: Този двигател за съхранение е за създаване на единна, локална, логическа база данни чрез свързване на няколко различни физически MySQL сървъра. На локалния сървър не се съхраняват данни и заявките се изпълняват автоматично на съответния отдалечен сървър. Той е идеален за среди с разпределени витрини с данни и може значително да подобри производителността, когато използва MySQL за аналитично отчитане.

Определяне на машина за съхранение

Как да променя кой механизъм за съхранение се използва?

Използваният механизъм за съхранение се установява при създаване на таблица. Както беше посочено по-горе, InnoDB е машината за съхранение по подразбиране в MySQL версии 5.5 и по-нови. Ако искате да използвате друг, най-добре е да направите това във вашия израз CREATE TABLE. Например, да кажем, че сте идентифицирали таблица, която трябва да използва CSV механизма за съхранение. Вашият твърде опростен израз CREATE TABLE може да изглежда така:

mysql> СЪЗДАВАНЕ НА ТАБЛИЦА Споделени_данни (
    -> Data_ID INTEGER NOT NULL,
    -> Име VARCHAR(50) NOT NULL,
    -> Описание VARCHAR(150)
    -> ) ENGINE=’CSV’;
След което ще изпълним оператор INSERT както обикновено:
mysql> INSERT INTO Shared_Data VALUES
-> (1, „устройство едно“, „най-новата версия на най-добрата технология“),
-> (2, „устройство две“, „най-бързото на пазара“);

При успех, ако проверите директорията на базата данни, вече трябва да има файл „Shared_Data.CSV“, който съдържа записите, които сте вмъкнали в таблицата Shared_Data.

Същата методология може да се използва за всеки един от многото машини за съхранение, които MySQL поддържа. Въпреки че е възможно да промените механизма за съхранение след създаване на таблица с ALTER TABLE изявление, най-добрата практика е да планирате съответно и да го зададете в началото.

При закриване

MySQL има много опции

Както можете да видите, MySQL предлага поддръжка за машини за съхранение, предназначени да се справят с много различни задачи в много различни среди. Идентифицирането кои двигатели да използваме и кога да ги използваме може да ни помогне да избегнем ненужни усложнения и проблеми с производителността, тъй като приложенията ни се мащабират.

Независимо дали имате нужда от 99,999% време за работа и надеждност на вашия разпределен изчислителен клъстер или имате нужда от поддръжка на транзакции, съвместима с ACID с ограничения FOREIGN KEY, MySQL има машина за съхранение, която да отговаря на вашите нужди.

Както винаги, правилното планиране и идентифициране на целите и изискванията на вашия проект е най-добрият начин да определите точно кои машини за съхранение са най-подходящи за вашето приложение. Надяваме се, че тази статия служи като полезна отправна точка, за да ви помогне в това отношение.

Тази статия първоначално се появи тук. Препубликувано с разрешение. Изпратете жалбите си за авторски права тук.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да съкратите таблица с ограничен външен ключ?

  2. Присъединете таблици от два различни сървъра

  3. Как да премахнете всички неалфа-цифрови знаци от низ в MySQL?

  4. Как да задам уникално ограничение за множество колони в MySQL?

  5. MySQL – Как да генерираме произволно число