Apa Itu MySQL?
MySQL adalah sistem manajemen basis data relasional (Relational Database Management System/RDBMS) open-source yang populer. Dikembangkan oleh Oracle Corporation (awalnya oleh MySQL AB), MySQL digunakan untuk menyimpan, mengelola, dan mengambil data secara efisien. MySQL mendukung SQL (Structured Query Language) sebagai bahasa standar untuk berinteraksi dengan database.
MySQL sering digunakan dalam aplikasi web (seperti WordPress, Joomla, atau e-commerce), aplikasi mobile, dan sistem enterprise karena kecepatan, keandalan, dan kemudahan skalabilitasnya.
Berikut adalah penjelasan tentang aspek-aspek penting dalam penyimpanan database MySQL:
1. Mesin penyimpanan (Storage Engines)
MySQL dapat mendukung berbagai mesin penyimpanan, masing-masing dengan karakteristik kinerja dan fitur yang berbeda. Yang paling umum digunakan adalah:
InnoDB: Ini adalah mesin penyimpanan default sejak MySQL versi 5.5. InnoDB ideal untuk aplikasi yang membutuhkan banyak transaksi (misalnya, situs web e-commerce) karena menawarkan fitur-fitur seperti:
Kepatuhan ACID: Menjamin keandalan dan konsistensi data.
Penguncian baris (row-level locking): Mengunci hanya baris yang sedang dimodifikasi, sehingga memungkinkan konkurensi yang lebih baik.
Batasan foreign key: Memastikan integritas referensial antar tabel.
MyISAM: Mesin penyimpanan lama yang lebih sederhana dan dioptimalkan untuk beban kerja yang sangat intensif membaca (read-intensive). Namun, MyISAM tidak mendukung transaksi ACID atau penguncian baris.
Memory: Mesin penyimpanan yang menyimpan seluruh data di dalam memori utama (RAM). Ini memberikan akses data yang sangat cepat dan ideal untuk tabel sementara atau caching data yang sering diakses tetapi jarang berubah. Data akan hilang saat server dimatikan.
NDB Cluster: Mesin penyimpanan yang memungkinkan tabel dikelompokkan dalam kluster. Ini memungkinkan beberapa node untuk melakukan operasi insert, update, dan delete pada tabel yang sama secara bersamaan.
2. Struktur file di disk
MySQL menyimpan setiap database sebagai subdirektori di dalam direktori data utamanya.
Lokasi Default: Secara bawaan, lokasi direktori data biasanya berada di /var/lib/mysql pada sistem operasi Linux.
Struktur File: Di dalam direktori database, MySQL membuat file-file untuk menyimpan tabel dan data.
File Definisi Tabel (.frm): Ketika sebuah tabel dibuat, MySQL menyimpan definisi tabel (skema) dalam file .frm yang namanya sama dengan nama tabel tersebut.
File Data (.ibd atau lainnya): Tergantung pada mesin penyimpanannya, data tabel akan disimpan dalam file yang berbeda. Misalnya, InnoDB menyimpan data dan indeks dalam file .ibd untuk setiap tabel jika dikonfigurasi sebagai file-per-table tablespaces.
3. Hirarki penyimpanan data
Secara internal, mesin penyimpanan InnoDB mengatur data dalam hirarki berikut:
Tablespace: Unit penyimpanan logis tertinggi yang berisi data, indeks, dan struktur lainnya.
Segment: Terdiri dari satu atau lebih extent.
Extent: Terdiri dari beberapa page yang berdekatan.
Page: Unit penyimpanan dasar, biasanya berukuran 16 KB. Data tabel dan indeks disimpan dalam page ini.
Row: Baris-baris data disimpan di dalam page. InnoDB mendukung format baris yang berbeda seperti COMPACT, REDUNDANT, DYNAMIC, dan COMPRESSED.
4. Optimalisasi penyimpanan
Untuk mendapatkan kinerja yang optimal, MySQL menggunakan beberapa mekanisme:
Buffer Pool InnoDB: Area memori di mana data dan indeks yang sering diakses disimpan. Ketika data diminta, MySQL akan memeriksa buffer pool terlebih dahulu. Jika data tidak ditemukan, data akan dibaca dari disk dan dimasukkan ke buffer pool.
Indexing: MySQL menggunakan indeks untuk mempercepat pencarian dan pengambilan data. Indeks diimplementasikan menggunakan struktur data seperti pohon B+ (B+ tree). Hal ini memungkinkan MySQL untuk menemukan baris data dengan cepat tanpa harus memindai seluruh tabel.
Manajemen transaksi: InnoDB menggunakan log transaksi (transaction logs) untuk memastikan integritas data. Log ini merekam semua perubahan sebelum disimpan ke disk, memungkinkan pemulihan data jika terjadi kegagalan.