IMHO Anda tidak perlu membaginya secara fisik. Namun, akan lebih baik untuk menyimpannya.
Jika users
tabel menggunakan Mesin Penyimpanan MyISAM, Anda memiliki keuntungan yang bagus.
Karena MyISAM hanya menyimpan indeks, Anda dapat melakukan dua hal
- Anda bisa membuat cache kunci khusus hanya untuk memuat indeks MyISAM untuk
users
tabel saja
- Anda bisa mengindeks nama pengguna dan kata sandi untuk memaksa kueri untuk menekan cache kunci khusus itu saja
Pastikan indeks berikut ada untuk users
ALTER TABLE users ADD UNIQUE INDEX username_ndx (username);
ALTER TABLE users ADD UNIQUE INDEX username_password_ndx (username,password);
Ada dua (2) alasan utama untuk kedua indeks
ALASAN untuk indeks # 1
Indeks username_ndx
mencegah nama pengguna memiliki banyak kata sandi, serta mencegah banyak pengguna dengan nama yang sama
ALASAN untuk indeks # 2
Indeks username_password_ndx
menyediakan indeks penutup . Dengan demikian, kueri Anda akan mencari nama pengguna dan kata sandi di cache MyISAM khusus, alih-alih memeriksa tabel.
Lebih Banyak Tautan tentang Prinsip-prinsip Indeks Penutupan
Hal berikutnya adalah benar-benar membuat cache kunci khusus itu. Berikut adalah perintah untuk membuat cache kunci 8MB dan memuat cache kunci khusus itu (Contoh: Jika tabelnya adalah mydb.users
):
SET GLOBAL authentication_cache.key_buffer_size = 1024 * 1024 * 8;
CACHE INDEX mydb.users IN authentication_cache;
LOAD INDEX INTO CACHE mydb.users;
Anda harus meletakkan ketiga baris ini di file /var/lib/mysql/startup.sql
Tambahkan ini ke /etc/my.cnf
[mysqld]
init-file=/var/lib/mysql/startup.sql
Ini akan memuat cache setiap kali mysql dimulai
Cobalah !!!
UPDATE 2011-12-30 17:25 EDT
Jika Anda ingin mendapatkan ukuran yang tepat untuk mengatur cache, gunakan kueri berikut:
SELECT CONCAT('1024 * 1024 * ',ROUND(index_length/power(1024,2))) RecommendedCacheSize
FROM information_schema.tables WHERE table_name='users';
UPDATE 2011-12-30 23:21 EDT
Berikut adalah metode berdasarkan InnoDB
Anda masih membutuhkan indeks
ALTER TABLE users ADD UNIQUE INDEX username_ndx (username);
ALTER TABLE users ADD UNIQUE INDEX username_password_ndx (username,password);
Anda harus memastikan Pool Buffer InnoDB memiliki nama pengguna dan kata sandi yang tersedia. Anda mungkin harus melakukan pemindaian indeks lengkap saat startup mysql:
Langkah 1) Buat ReadUserPass.sql
echo "select username,password from users;" > /var/lib/mysql/ReadUserPass.sql
Langkah 2) Tambahkan skrip itu ke /etc/my.cnf
[mysqld]
init-file=/var/lib/mysql/ReadUserPass.sql
Langkah 3) Lakukan salah satu dari yang berikut ini
$ service mysql restart
mysql> source /var/lib/mysql/ReadUserPass.sql
Karena kedua kolom ini (nama pengguna dan kata sandi) berada di username_password_ndx
, semua halaman indeks yang menyusun indeks ini dimuat ulang ke dalam Pool Buffer InnoDB. Ini diperlukan karena ada kemungkinan halaman indeks sedang dihapus. Untuk meminimalkan hal itu, tambah Ukuran Buffer Pool dan mulai ulang mysql (satu kali).