Veri tabanı tasarımı sırasında veya daha sonra veri tabanına eklenen ozellikler (INDEX, Foreign Key , Unique,…) performans artışı sağlayabilir.

Veri tabanı boyutu arttıkca eklenen ozellikler SELECT, INSERT, UPDATE, DELETE gibi temel işlevlerin yavaşlamasına neden olur.

Cunku her kayıt eklendiğinde kayıt ekleme, INDEX haritasının yenilenmesi, UNIQUE kontrolu 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 icerisinde bulunan LOCK TABLES ozelliği sayesinde tablo bir işlem icin bir sureliğine diğer oturumlardan gelen istekleri kuyruğa ekler ve işlemlerin daha hızlı yapılması sağlanır.

Tablo kilitlemek icin aşağıdaki ifade kullanılır.

Kod:
LOCK TABLES tablo_adi READ|WRITE;

READ: Diğer oturumlar tarafından tabloya kayıt ekleme, silme ve guncelleme yapılamaz. Sadece veriler okunur.

WRITE: Diğer oturumlar tarafından tum istekleri engeller.


Urun bilgilerinin bulunduğu tabloya kayıt eklemesi yapıldığı sırada tablo kilitleme işlemini yapalım.


Tablo kilitleme işleminin gozlenebilmesi icin işletim sistemi komut yorumlayıcısından iki farklı oturum acılması veya farklı iki MySQL aracının kullanılması gerekmektedir.

İlk olarak bir oturumdan aşağıdaki ifade ile tabloyu kilitleyelim.


Kod:
LOCK TABLES kategoriler WRITE;

Kilitleme işleminden sonra diğer oturumdan aşağıdaki komutu calıştırdığımızda, komut diğer oturum tarafından kilitlenen tablonun kilidinin acılmasını bekleyecektir.


Kod:
SELECT * FROM kategoriler;

Tablo kilitleme işleminin yapıldığı oturum tarafından aşağıdaki komut calıştırıldığında bekleyen işlem hakkında detaylı bilgi gorulebilir.


Kod:
SHOW PROCESSLIST;

Tablo kilidini acmak icin aşağıdaki komut veya oturumun kapatılması yeterli olacaktır.


Kod:
UNLOCK TABLES;