1. Pendahuluan
MySQL merupakan salah satu sistem manajemen basis data yang paling banyak digunakan, dan di antara fitur utamanya, pengaturan Collation memainkan peran penting dalam menentukan cara data string dibandingkan dan diurutkan.
Pentingnya Kolasi
Tanpa pengaturan kolasi yang tepat, hasil pencarian dapat salah atau kinerja basis data dapat menurun. Hal ini menjadi penting terutama pada sistem multibahasa, di mana perbandingan karakter dan pencarian yang akurat sangat penting.
Artikel ini menjelaskan kolasi MySQL secara detail—konfigurasinya, jenisnya, dan pertimbangan utama—untuk membantu Anda mengelola basis data Anda dengan lebih efektif.
2. Apa Itu Kolasi?
Kolasi mendefinisikan aturan yang digunakan MySQL untuk membandingkan dan mengurutkan nilai string.
Peran Kolasi
- Pengurutan string: Menentukan bagaimana string diurutkan.
- Perbandingan string: Digunakan dalam ekspresi seperti
WHERE name = 'Sagawa'. - Akurasi pencarian: Mempengaruhi kompatibilitas multibahasa.
Hubungan dengan Set Karakter
Kolasi terkait erat dengan set karakter. Sebagai contoh, set karakter utf8 mencakup kolasi berikut:
utf8_general_ci: Perbandingan tidak peka huruf besar/kecil.utf8_bin: Perbandingan biner (peka huruf besar/kecil).
Konvensi Penamaan
character_set_name_comparison_method
Contoh:
utf8_general_ci: Tanpa peka huruf besar/kecil (ci= case insensitive).utf8_bin: Perbandingan biner.
3. Tingkatan Kolasi di MySQL
MySQL memungkinkan kolasi diatur pada lima level:
Level Server
SHOW VARIABLES LIKE 'collation_server';
Untuk mengubahnya, ubah my.cnf dan restart server:
[mysqld]
collation_server=utf8mb4_unicode_ci
Level Basis Data
ALTER DATABASE db_name DEFAULT COLLATE utf8mb4_unicode_ci;
Level Tabel
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Level Kolom
ALTER TABLE table_name MODIFY COLUMN column_name VARCHAR(255) COLLATE utf8mb4_unicode_ci;
Level Literal String
SELECT * FROM table_name WHERE column_name = 'value' COLLATE utf8mb4_bin;
4. Jenis Kolasi Utama dan Karakteristiknya
utf8_general_ci
- Fitur: Perbandingan tidak peka huruf besar/kecil dan cepat.
- Catatan: Kurang akurat; tidak sepenuhnya kompatibel Unicode.
utf8_unicode_ci
- Fitur: Perbandingan dengan akurasi tinggi berdasarkan standar Unicode.
- Catatan: Sedikit lebih lambat dibandingkan
utf8_general_ci.
utf8_bin
- Fitur: Peka huruf besar/kecil; memerlukan kecocokan tepat.
- Kasus penggunaan: Kata sandi dan pengenal.
utf8mb4_unicode_ci
- Fitur: Sesuai dengan standar Unicode modern; mendukung berbagai bahasa.
- Kasus penggunaan: Aplikasi yang menangani emoji dan simbol khusus.
5. Cara Memeriksa dan Mengubah Kolasi
Anda dapat memeriksa atau memodifikasi kolasi pada level basis data, tabel, atau kolom.
Memeriksa Kolasi
Kolasi Basis Data
SELECT SCHEMA_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = 'database_name';
Kolasi Tabel
SHOW TABLE STATUS WHERE Name = 'table_name';
Kolasi Kolom
SHOW FULL COLUMNS FROM table_name;
Mengubah Kolasi
Basis Data
ALTER DATABASE database_name
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;
Tabel
ALTER TABLE table_name
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Kolom
ALTER TABLE table_name
MODIFY COLUMN column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Mengubah Kolasi Sementara
Saat membandingkan kolom dengan kolasi berbeda, gunakan klausa COLLATE untuk menghindari kesalahan.
SELECT * FROM table_name
WHERE column1 COLLATE utf8mb4_unicode_ci = column2;
Selalu cadangkan data Anda dan periksa kompatibilitas aplikasi sebelum melakukan perubahan.

6. Catatan dan Praktik Terbaik
Saat mengonfigurasi kolasi di MySQL, pertimbangkan langkah-langkah dan praktik berikut untuk memastikan kinerja optimal.
Catatan Penting
Kombinasi Kollasi Berbeda
Membandingkan atau menggabungkan kolom dengan kollasi berbeda dapat memicu kesalahan.
- Contoh Kesalahan:
ERROR 1267 (HY000): Illegal mix of collations for operation '='
- Solusi: Gunakan klausa
COLLATEuntuk menyelaraskan kollasi.
SELECT * FROM table_name
WHERE column1 COLLATE utf8mb4_unicode_ci = column2;
Mengubah Kollasi dan Data yang Ada
Mengubah kollasi dapat mempengaruhi cara data yang ada dibandingkan atau dicari.
Dampak Kinerja
utf8mb4_unicode_cilebih akurat namun lebih lambat dibandingkanutf8_general_ci.- Untuk dataset besar, pemilihan kollasi dapat berdampak signifikan pada kecepatan query.
Masalah Migrasi
Pastikan kompatibilitas dengan aplikasi dan sistem lain saat memodifikasi kollasi.
Praktik Terbaik
1. Pilih Kollasi Berdasarkan Kebutuhan
- Akurasi: Gunakan
utf8_unicode_ciatauutf8mb4_unicode_ciuntuk perbandingan yang tepat. - Kinerja: Gunakan
utf8_general_ciuntuk perbandingan yang lebih cepat ketika akurasi kurang kritis. - Dukungan Multibahasa: Lebih baik menggunakan kollasi berbasis
utf8mb4untuk emoji dan karakter khusus.
2. Pertahankan Konsistensi
- Gunakan kollasi yang sama di seluruh database, tabel, dan kolom untuk menghindari ketidaksesuaian.
- Terapkan
COLLATEhanya sementara bila perlu.
3. Uji dan Cadangkan Sebelum Perubahan
- Uji perubahan konfigurasi di lingkungan staging.
- Selalu cadangkan data produksi sebelum menerapkan perubahan.
4. Optimalkan Kinerja
- Gunakan kollasi berkinerja tinggi untuk kolom yang sering diquery (misalnya, yang diindeks).
- Sesuaikan kollasi per query bila diperlukan.
5. Gunakan Standar Unicode Terbaru
Untuk sistem multibahasa, gunakan utf8mb4_0900_ai_ci untuk presisi dan kompatibilitas yang lebih baik.
Kesimpulan
Kollasi MySQL menentukan cara data string dibandingkan dan disortir dalam database. Panduan ini membahas konsep, metode konfigurasi, jenis, dan praktik terbaik untuk pengelolaan kollasi yang efektif.
Poin Penting
- Definisi: Kollasi mengontrol perbandingan dan pengurutan string. Memilih yang tepat meningkatkan akurasi dan kinerja.
- Berbagai Tingkat: Kollasi dapat diatur pada tingkat server, database, tabel, kolom, dan literal.
- Jenis Utama: *
utf8_general_ci: Cepat namun kurang akurat. *utf8_unicode_ci: Akurat namun lebih lambat. *utf8mb4_unicode_ci: Mematuhi Unicode dan mendukung emoji. - Konfigurasi: Contoh SQL untuk memeriksa dan memodifikasi kollasi disediakan.
- Praktik Terbaik: Selalu uji dan cadangkan sebelum membuat perubahan.
Mengoptimalkan Penggunaan Kollasi
Kollasi secara langsung memengaruhi perilaku perbandingan dan pengurutan string. Dengan mengikuti metode dan praktik terbaik yang dibahas, Anda dapat mempertahankan akurasi dan kinerja dalam sistem database MySQL.


