MySQL — relatsion ma’lumotlar bazasini boshqarish tizimi bo‘lib, ma’lumotni jadval, qator va ustunlarda saqlaydi hamda SQL orqali boshqaradi. U client-server arxitekturasida ishlaydi: server ma’lumot fayllari, tranzaksiya, indeks va ruxsatlarni boshqaradi, client esa tarmoq yoki lokal socket orqali so‘rov yuboradi. MySQL veb-ilovalar va umumiy biznes tizimlarida keng qo‘llanadi.
Schema va SQL
Database ichida jadvallar, view, index, trigger va boshqa obyektlar mavjud. CREATE TABLE ustun turi, nullability, default, primary key va constraintlarni belgilaydi. SELECT ma’lumot o‘qiydi, INSERT, UPDATE va DELETE yozuv holatini o‘zgartiradi.
CREATE TABLE articles (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(200) NOT NULL,
published_at DATETIME NULL
);
Ustun turi saqlash, taqqoslash va validatsiya semantikasiga ta’sir qiladi. Pul qiymati uchun DECIMAL, vaqt uchun mos date-time turi ishlatiladi; sonni matn sifatida saqlash sort va hisobni murakkablashtiradi.
InnoDB storage engine
MySQL bir nechta storage engine modeliga ega, zamonaviy umumiy ishlatishda InnoDB standart engine hisoblanadi. U tranzaksiya, row-level locking, crash recovery va foreign keylarni qo‘llab-quvvatlaydi. Clustered primary key sabab jadval qatorlari primary key tartibidagi B-tree bilan bog‘liq saqlanadi. Secondary index leaflari primary key qiymatini ham olib yuradi.
Primary key juda katta yoki tasodifiy bo‘lsa, secondary index hajmi va yozish xatti-harakatiga ta’sir qiladi. Indeks so‘rovni tezlashtiradi, lekin har yozuv o‘zgarishida yangilanadi va disk egallaydi.
Tranzaksiya va izolyatsiya
Tranzaksiya bir nechta amalni atomar birlikda bajaradi. COMMIT o‘zgarishni tasdiqlaydi, ROLLBACK bekor qiladi. InnoDB MVCC orqali o‘quvchilarga ma’lum snapshot ko‘rsatadi. Isolation level dirty read, non-repeatable read va phantom kabi hodisalarning qaysi darajada mumkinligini belgilaydi.
Uzoq tranzaksiya eski row versionlarni ushlab, purge va storagega bosim berishi mumkin. Deadlock ikki tranzaksiya bir-birining lockini kutganda yuz beradi; InnoDB ulardan birini bekor qiladi, ilova mos tranzaksiyani qayta urinishi mumkin.
Query optimizatsiyasi
Optimizer statistika va indekslar asosida execution plan tanlaydi. EXPLAIN jadval tartibi, access type va taxminiy qatorlarni ko‘rsatadi. Composite indexda ustunlar tartibi muhim. Funksiya qo‘llangan yoki type implicit o‘zgargan predicate indeksdan foydalanishni cheklashi mumkin.
Slow query log sekin so‘rovlarni topadi. Muammo har doim indeks yetishmasligi emas; ortiqcha N+1 so‘rov, katta natija, lock contention yoki noto‘g‘ri schema ham sabab bo‘ladi.
Replikatsiya va backup
Binary log serverdagi o‘zgarishlarni qayd etib, replica tugunlariga uzatish va point-in-time recovery uchun ishlatilishi mumkin. Replica o‘qish yukini oladi, ammo asynchronous rejimda masterdan kechikishi mumkin. Backup fizik yoki logik usulda olinadi va restore testi bilan tekshiriladi.
Character set va collation
Character set matnning qanday kodlanishini, collation esa taqqoslash va sort tartibini belgilaydi. utf8mb4 Unicode belgilarining to‘liq diapazonini saqlash uchun ishlatiladi. Tarixiy utf8 nomli MySQL charseti ayrim versiyalarda uch baytli subsetni anglatadi va barcha emoji yoki supplementary belgilarni qamramaydi. Case-insensitive collation A va ani teng ko‘rishi mumkin; unique index natijasi ham shunga bog‘liq. Connection, database, table va column darajasidagi charset farqi implicit conversion yoki indeks muammosi keltirishi mumkin. Migratsiya oldidan mavjud noto‘g‘ri kodlangan ma’lumot alohida tekshiriladi.
Bog‘liq tushunchalar
SQL, relational database, InnoDB, transaction, index, replication, query optimizer