Кіріспе

Деректер қорының қозғалтқышы

MyISAM – 2009 жылдың желтоқсан айында жарық көрген MySQL реляциялық деректер қорын басқару жүйесінің 5.5 нұсқасына дейінгі нұсқалары үшін стандартты сақтау қозғалтқышы болды. Ол ескі ISAM кодына негізделген, бірақ көптеген пайдалы мүмкіндіктермен толықтырылған.

Файл жүйесі

MyISAM кестесі дискте үш файлда сақталады (егер ол бөлінбесе). Файлдар кесте атауынан басталатын және файл түрін көрсететін кеңейтуі бар атауларға ие. MySQL кесте анықтамасын сақтау үшін frm файлын пайдаланады, бірақ бұл файл MyISAM қозғалтқышының бөлігі емес; керісінше, ол сервердің бөлігі. Деректер файлы MYD (MYData) кеңейтіміне ие. Индекс файлы MYI (MYIndex) кеңейтіміне ие. Индекс файлы жоғалған жағдайда, индекстерді қайта құру арқылы оны әрқашан қайта жасауға болады. Файлдар форматы ROW FORMAT кесте опциясына байланысты. Келесі форматтар қол жетімді: FIXED: Fixed – барлық деректердің (оның ішінде өзгермелі ұзындығы бар деректердің) ұзындығы белгілі формат. Бұл форматты оқу жылдамдығы жоғары, және бұзылған кестелерді жақсартуға көмектеседі. Егер кестеде үлкен өзгермелі ұзындығы бар бағандар (BLOB немесе TEXT) болса, FIXED форматын қолдануға болмайды. DYNAMIC: Өзгермелі ұзындығы бар бағандардың ұзындығы тұрақты емес. Бұл форматты оқу сәл баяу, бірақ дискідегі орынды үнемдейді. COMPRESSED: Сығылған кестелер MySQL жұмыс істемей тұрғанда, арнайы құралмен жасалуы мүмкін және тек оқуға арналған. Бұл оларды көбінесе қолдануға жарамсыз етеді, бірақ сығылу деңгейі әдетте басқа нұсқалардан жоғары болады. MyISAM файлдары жүйеге тәуелді емес және MyISAM транзакциялық болмағандықтан, олардың мазмұны сервердің ағымдағы жүктемесіне тәуелді емес. Сондықтан оларды әртүрлі серверлер арасында көшіруге болады.

Ерекшеліктері

MyISAM оқу операциялары көп, жазу операциялары аз немесе мүлдем жоқ орталар үшін оңтайландырылған. MyISAM-ді артық көретін әдеттегі сала – деректер қоймасы, себебі ол өте үлкен кестелерге сұрау салуды қамтиды, ал мұндай кестелерді жаңарту деректер базасы қолданылмайтын кезде (әдетте түнде) жасалады. MyISAM жылдам оқуға мүмкіндік беретінінің себебі – оның индекстерінің құрылымы: әрбір жазба дерек файлындағы жазбаға сілтеме жасайды, ал көрсеткіш файл басынан өтеді. Осылайша, жазбаларды, әсіресе формат ТҰРАҚТЫ болса, жылдам оқуға болады. Сондықтан, қатарлардың ұзындығы тұрақты. Жаңа қатарларды енгізу де оңай, себебі жаңа қатарлар дерек файлының соңына тіркеледі. Дегенмен, жою және жаңарту операциялары қиынға соғады: жою операциясы бос орын қалдыруы керек, әйтпесе қатарлардың орналасуы өзгереді; жаңарту операциясы үшін де солай, себебі қатарлардың ұзындығы қысқарады; егер жаңарту қатарды ұзартса, қатар фрагменттеледі. Қатарларды фрагменттендіру және бос орынды пайдалану үшін OPTIMIZE TABLE командасын орындау қажет. Осы қарапайым механизмнің арқасында MyISAM индексінің статистикасы әдетте өте дәл болады. Алайда, MyISAM-нің қарапайымдылығы бірнеше кемшіліктерге ие. MyISAM-нің басты кемшілігі – транзакцияларды қолдаудың болмауы. Сонымен қатар, сыртқы кілттер қолдау көрсетілмейді. Құрамында InnoDB пайдаланғанда, MyISAM-ге қарағанда жылдамдық жоғары. MySQL 5.5 және одан жоғары нұсқалары InnoDB қозғалтқышына көшті, бұл анықтамалық тұтастық шектеулерін және жоғары бір мезгілділікті қамтамасыз етеді. MyISAM FULLTEXT индекстеуін және OpenGIS дерек түрлерін қолдайды.

Шеңберлер

MariaDB-де Aria деп аталатын сақтау қозғалтқышы бар, ол "MyISAM-ға қарағанда апатқа төзімді балама" ретінде сипатталады. Дегенмен, MariaDB әзірлеушілері әлі де MyISAM кодымен жұмыс істейді. Басты жақсарту – "Сегменттелген кілт кэші". Егер ол қосылса, MyISAM индекстерінің кэші сегменттерге бөлінеді. Бұл бірнеше операцияны бір уақытта орындау мүмкіндігін жақсартады, себебі жіптер сирек жағдайда бүкіл кэшті құлыптауға қажет болады. MariaDB-де MyISAM сондай-ақ виртуалды бағандарды қолдайды. Drizzle MyISAM-ды қамтымайды.