30-05-2017, Saat: 16:17
MySQL Optimizasyonu: Indexler
MySQL, PHP ile en çok kullanılan veritabanı sistemidir. PHP ile geliştirilen web uygulamalarının karmaşıklığı arttıkça MySQL’in stabil bir şekilde çalışması büyük önem arz etmektedir. Üç yazıdan oluşacak serimizde MySQL’i optimize edeceğiz. MySQL’i optimize ederek performansını artıracağız. Performansı azaltan tehditlerin üzerinde durup bunları nasıl gidereceğimizi göreceğiz. İlk yazımızda indexleri iyileştirme üzerinde duracağız.
MySQL Indexleri Nedir?
Eğer şu ana kadar MySQL indexleri ile çalışmamışsanız büyük ihtimalle MySQL veritabanınızda önemli derecede peroformans düşüklüğü vardır. MySQL indexlerini kitaplardaki içindekiler bölümüne benzetebiliriz. Kitaplarda içindekiler kısmına bakarak aradığımız şeyi nasıl kolayca buluyorsak MySQL veritabanlarındaki indexlerde de aradığımız şeyi kolaylıkla bulabiliriz. Eğer kitabımızın içindekiler kısmı yoksa bütün kitaba bakmak zorunda kalırız. Aynı şekilde MySQL veritabanımızın da indexi yoksa bütün veritabanını aramak gerekir.
Kısaca indexleri veritabanında aradığımızı kolaylıkla bulmamızı sağlayan yol göstericiler olarak tanımlayabiliriz. Bu nedenle indexler MySQL veritabanımızın performansını önemli derecede artırırlar. MySQL indexleri oluşturulur ve saklanır. Bundan dolayı update ve insert sorgularında çok az bir miktarda yavaşlama olur ve diskte biraz daha fazla yer kaplar. Eğer tablolarınıza doğru bir şekilde index tanımladıysanız genelde update ve insert ederken uyarıya gerek kalmaz.
Bir kaç satırdan oluşan küçük çaplı tablolar için index oluşturmak akıl karı değildir. Hız açısından bir faydası olmaz. Binlerce satırlık tablolarda indexler kullanıldığında performansa yaptığı katkı gözle görülür bir şekilde artacaktır.
Bu yazımızda indexleri oluşturma değil oluşturulmuş indexleri iyileştirme üzerinde duracağız.
Yinelenen İndexleri Bulma
Yinelenen indexler select sorgusunu yavaşlatmazlar. Bunun yanında insert ve update sorugularını yavaşlatır ve diskte daha fazla yer kaplar. Aşırı yinelenen indexlerden kaçınmak gerekir. Percone Toolkit kullanarak yinelenen indexleri bulabiliriz. Bu araç veritabanını analiz eder ve yinelenen indexleri gösterir. İndirmek için tıklayın. Bu araç veritbanlarımızı tarayarak yinlenen indexler hakkında bilgi verir. Yukarıdaki linkten programı indirip kurun. Uçbirimi açıp root yetkilerini aldıktan sonra aşağıdaki kodu yazın.
Alıntı: pt-duplicate-key-checker -u MySQL KULLANICI ADI -p MySQL ŞİFRE
Karşınıza aşağıdaki gibi bir ekran gelecektir.
Bende şu an yinelenmiş index yok. Eğer olsaydı Total Duplicate Indexes ve Duplicate Index Size gibi değerler ve yinelenen indexlerin bilgileri yer alırdı. Eğer tablonuzda yinelenen indexler varsa bunları kaldırın.