MySQL Tablo Kilitleme
Yazıda MySQL VTY sisteminde performans arttırmak için kullanılan tablo kilitleme ve kullanımı ile ilgili bilgiler yer almaktadır.
Veri tabanı tasarımı sırasında veya daha sonra veri tabanına eklenen özellikler (INDEX, Foreign Key , Unique,…) performans artışı sağlayabilir.
Veri tabanı boyutu arttıkça eklenen özellikler SELECT, INSERT, UPDATE, DELETE gibi temel işlevlerin yavaşlamasına neden olur.
Çünkü her kayıt eklendiğinde kayıt ekleme, INDEX haritasının yenilenmesi, UNIQUE kontrolü gibi işlemler yapılır.
Ayrıca birden fazla oturum tarafından yapılan benzer işlemlerin yapılması MySQL VTY sisteminin yavaşlamasına neden olur.
MySQL içerisinde bulunan LOCK TABLES özelliği sayesinde tablo bir işlem için bir süreliğine diğer oturumlardan gelen istekleri kuyruğa ekler ve işlemlerin daha hızlı yapılması sağlanır.
Tablo kilitlemek için aşağıdaki ifade kullanılır.
LOCK TABLES tablo_adi READ|WRITE;
READ: Diğer oturumlar tarafından tabloya kayıt ekleme, silme ve güncelleme yapılamaz. Sadece veriler okunur.
WRITE: Diğer oturumlar tarafından tüm istekleri engeller.
Ürün bilgilerinin bulunduğu tabloya kayıt eklemesi yapıldığı sırada tablo kilitleme işlemini yapalım.
Tablo kilitleme işleminin gözlenebilmesi için işletim sistemi komut yorumlayıcısından iki farklı oturum açılması veya farklı iki MySQL aracının kullanılması gerekmektedir.
İlk olarak bir oturumdan aşağıdaki ifade ile tabloyu kilitleyelim.
LOCK TABLES kategoriler WRITE;
Kilitleme işleminden sonra diğer oturumdan aşağıdaki komutu çalıştırdığımızda, komut diğer oturum tarafından kilitlenen tablonun kilidinin açılmasını bekleyecektir.
SELECT * FROM kategoriler;
Tablo kilitleme işleminin yapıldığı oturum tarafından aşağıdaki komut çalıştırıldığında bekleyen işlem hakkında detaylı bilgi görülebilir.
SHOW PROCESSLIST;
Tablo kilidini açmak için aşağıdaki komut veya oturumun kapatılması yeterli olacaktır.
UNLOCK TABLES;
Hayırlı günler dilerim.