Bir çok dinamik bir web sitesi için özel MySQL veritabanı odaklı PHP oturum yönetimi yazılı gelince, ne oturumu tablo için en iyi (hızlı okuma / yazma erişimi) yapısı nedir?
Kötü Örnek (Optimized değil):
CREATE TABLE `session` ( `session_id` VARCHAR(32) NOT NULL, `session_data` TEXT NOT NULL, `t_created` DATETIME NOT NULL, `t_updated` DATETIME NOT NULL, PRIMARY KEY (`session_id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8;
Ben Bellek Motorunu kullanarak daha iyi / daha hızlı olacağını varsayıyorum, ama emin değilim. Ben İngilizce şeyi açıklamak için iyi bir yol düşünemiyorum, ben önemli olduğunu düşünüyorum gereksinimleri / detayların bir listesini yaptık:
Detaylar:
- Kategori: Optimizasyon
- Alt Kategori: MySQL Sorgusu Performans
- Hedef: En Random Access Tablo Şema ve Tek Sıra Sorgulama
- Ortak Kullanım Alanları: Özel Oturum Yönetimi, Geçici Depolama
- İşletim Sistemi: * nix, daha spesifik: Centos 5 + (x86_64)
- Veritabanı: MySQL Versiyon: 5 + (Topluluk Version)
Sonuçlar:
- SQL Sorgu: Tablo oluşturma
- SQL Sorgu: Random Key Single Row seçin (örneğin PHP session id)
- SQL Sorgu: Rastgele Key ile takın Tek Sıra (örneğin PHP session id)
- SQL Sorgu: Random Key Update Tek Sıra (örneğin session id)
- SQL Query: Damgasıyla tarafından Birden Satır Sil (çöp toplama, örneğin oturumları doldu)
Beklenen Satır ömrü (örneğin oturum süreleri):
- % 30: 0s-30s
- % 20: 30s-5m
- % 30: 5m-1h
- % 20: 1 H-8h
Satır Sayısı (örn., aktif oturumlar) Beklenen:
- Düşük: 128
- Orta: 1.024
- Yüksek: 100000
Herkes ifade tüm bu iyi bir yol düşünmek durumunda, düzenlemek için çekinmeyin.