MySQL'de İndeksleme ve Sorgu Optimizasyonu için Gelişmiş Ayarlar

MySQL'de İndeksleme ve Sorgu Optimizasyonu için Gelişmiş Ayarlar

Bu makale, MySQL veritabanında sorgu ve indeksleme performansını artırmak için kullanılabilecek gelişmiş ayarları ele almaktadır İndekslerin oluşturulma yöntemleri, yönetimi ve MySQL'in desteklediği özel indeks türleri hakkında bilgi vermektedir Ayrıca sorgu optimizasyonu için gerekli teknikler ve bir sorgunun optimize edilmesi konusunda öneriler sunmaktadır Query Profiler gibi sorgu analizi araçları ve sunucu ayarları hakkında detaylı bilgi de verilmektedir Indeks yapısı türleri arasında B-Tree, HASH ve FULL-TEXT gibi popüler olanları bulunmaktadır Doğru indeksleme yöntemi seçerek, veritabanındaki sorguların hızını artırmak ve verileri daha etkili bir şekilde düzenleyebilmek mümkündür

MySQL'de İndeksleme ve Sorgu Optimizasyonu için Gelişmiş Ayarlar

MySQL veri tabanlarında sorgu ve indeksleme performansını artırmak için kullanılabilecek gelişmiş ayarları bu makalemizde ele alacağız. İndekslerin nasıl oluşturulduğu, yönetimi ve MySQL desteklediği özel indeks türleri hakkında bilgi alabilirsiniz. Sorgu optimizasyonu için gerekli olan teknikler ile bir sorgunun nasıl optimize edileceği konusunda önerilerimiz de bulunmaktadır.

MySQL sorgu geliştirme aracı olan Query Profiler ile sorguların analizi hakkında pratik bilgileri burada bulabilirsiniz. Sunucu ayarları hakkında da tüm detaylarıyla bilgi sahibi olabileceğiniz bu makalede iş parçacığı sayısı, sunucu önbelleği gibi temel ayarları nasıl optimize edebileceğiniz, veri depolama ve tamponlama hakkında da bilgi edinebilirsiniz. Ayrıca, gerçek hayatta karşılaşılan örnek senaryolarda MySQL indeksleme ve sorgu optimizasyonu tekniklerinin nasıl uygulanabileceğini de burada bulabilirsiniz.


MySQL İndeksleme Temelleri

MySQL veritabanı, büyük miktarda veri ile çalışırken sorgu performansını artırmak için indeksleme ve sorgu optimizasyonu ayarlarının doğru bir şekilde yapılandırılması gerekmektedir. İndeksleme işlemi, veritabanındaki verileri hızlı bir şekilde arama ve erişim sağlamak için yapılan bir yöntemdir. İndeksler, tablolardaki verileri kolaylıkla bulmak için bir rehber görevi görürler.

İndekslerin avantajları arasında hızlı arama ve sorgu işlemleri, daha az disk alanı kullanımı, birleştirme işlemleri için daha iyi performans ve veritabanının genel performansını artırmak yer almaktadır. İndeksler, veritabanına yeni veriler eklendiğinde veya silindiğinde, indekslerin güncellenmesi gerektiğinden düzenli olarak bakım ve optimizasyon gerektirir. İndekslerin oluşturulması, kaynak tüketimi ve veritabanı boyutuyla doğrudan ilişkilidir.


MySQL İndeksleme Yönetimi

MySQL veritabanında sorgu performansını artırmak için indeksleme oldukça önemlidir. Ancak indeksleme yönetimi, sorgu performansını artırmak için oluşturulacak indekslerin doğru bir şekilde yapılandırılmasını gerektirir. İndeksler, tabloların belirli sütunları için oluşturulabilir ve bunlar, sorgulama işlemini hızlandırmak için kullanılabilir. Bu nedenle, tablonuzun boyutu ne kadar küçük olursa olsun, doğru yapılandırılmış bir indeks veri erişim sürecini önemli ölçüde hızlandırabilir.

İndeksleme yönetimi, indeks eklenmesi gereken tabloları ve sütunları seçmek için veri modelini anlama becerisine dayanır. İndeksler doğru şekilde yapılandırılmadığında, onlar yerine performansı yavaşlatıcı faktörler haline gelebilirler. İndeksleme yönetimi, örneğin bir tablodaki sütunların indexlenebilir olduğunu kontrol etmek gibi birçok göreve sahiptir. Özellikle otomatik olmayan oluşturma seçeneğini kullanmak, indekslerin gereksiz yere oluşturulmasını engeller ve performansı hızlandırır.

Bir tabloya indeks eklerken, hangi sütunların veya sütun kombinasyonlarının indeksleneceğini belirlemek önemlidir. İlginizi çeken sütunları seçmek, sorgu süresini kısaltabilir ancak yan etkileri de dikkate alınmalıdır. Değişken büyüklükteki tablolar için, indeksleme performansını etkileyen bir başka faktör de indeks yapısının türüdür. Verilerin nasıl erişileceği, veritabanının boyutu ve yapılandırması, buna karar verirken göz önünde bulundurulması gereken faktörler arasındadır.

Genel olarak, indeksleme yönetimi, indeks eklemeyi gerektirebilecek tabloları belirleme ve hangi sütunların indekslenmesi gerektiğini tespit etme konusunda oldukça önemlidir. Doğru indeksleme yönetimi ve yapılandırması sayesinde sorgu performansını arttırabilir ve veritabanı yükünü azaltabilirsiniz.


MySQL İndeks Tipleri

MySQL, sorguların daha hızlı çalışmasını sağlamak için farklı indeks türleri sunar. İndeksler, tabloda bulunan verilerin daha hızlı ve verimli bir şekilde aranmasına olanak tanır. Temel olarak, her satırı benzersiz olarak tanımlayan bir anahtarın oluşturulması ile gerçekleştirilir.

Birçok indeks türü mevcut olsa da, en yaygın kullanılanlar B-Tree, HASH ve FULL-TEXT'dir. B-Tree, en yaygın kullanılan indeks türüdür ve temel olarak, indekslerin anahtar değerleri arasındaki bağlantıları kullanarak indeks alanını yaratır. HASH, sadece eşleşen değerlerde indeks yaratır ve tam eşleşmelerde oldukça verimli çalışır. FULL-TEXT ise tam metin araması için kullanılır ve özel arama operatörleriyle birleştirilerek metin içinde anahtar kelimeleri veya kelime öbeklerini aramak için kullanılır.

İndeks Türü Özellikleri
B-Tree En yaygın kullanılan indeks türüdür. Anahtar değerleri arasındaki bağlantıları kullanarak indeks alanı yaratır.
HASH Yalnızca eşleşen değerlerde indeks yaratır ve tam eşleşmelerde oldukça verimli çalışır.
FULL-TEXT Tam metin araması için kullanılır ve özel arama operatörleriyle birleştirilerek metin içinde anahtar kelimeleri veya kelime öbeklerini aramak için kullanılır.

Doğru indeksleme yöntemi seçerek, veritabanındaki sorguların hızını artırabilir ve verileri daha etkili bir şekilde düzenleyebilirsiniz. Ancak, her indeks türünün kendi avantajları ve dezavantajları vardır, bu nedenle doğru seçim yapmak önemlidir. Indeksleme için en iyi yöntemi seçmek, verileri yavaşlatma riskini en aza indirirken, verilerin daha hızlı ve etkili bir şekilde kullanılmasını sağlayacaktır.


B-Trees ve Hash İndeksleri

Bir B-Tree indeksi, birçok düğüm ve her düğümün birçok dalı olduğu ağaç yapılarını kullanır. Düğümler, sıralanmış bir anahtar listesi ve bu anahtarlarla ilişkili değerleri içerir. Arama işlemi, ağaç yapısını tarayarak hızlı bir şekilde gerçekleştirilir. B-Tree indeksi, her eklenen satır için bir indeks kaydı oluşturur ve bu kayıtlar diskte saklanır. Bu nedenle, B-Tree indeks yaklaşık olarak veri boyutu kadar yer kaplar.

Hash indeksleri ise bir anahtar ve ona karşılık gelen bir değer içeren bir tablo kullanır. Hash indeksi, anahtarın hash değeri kullanılarak çalıştığından çok hızlıdır. Ancak, hash değeri benzersiz değilse, veri kaybı yaşanabilir. Hash indeksleri de genellikle B-Tree indeksleri kadar geniş alan kaplamaz, ancak arama işlemleri kimi zaman daha yavaş olabilir. Hash indeksleri, sadece "=" operatörü için kullanılabilir ve karşılaştırma veya aralık sorguları gibi farklı operatörler için uygun değildir.

B-Tree ve hash indeksleri arasında performans açısından birçok farklılık vardır. Eğer arama sonuçları, büyük bir yüzdeye sahipse B-Tree indeksleri tercih edilmelidir. Hash indeksleri, "=" operatörüne dayalı arama işlemleri için çok daha hızlıdır ve tüm verilerin benzersiz olduğu durumlarda kullanılabilir.


Full-Text İndeksleri

Full-Text İndeksleri, MySQL'de tam metin aramaları için kullanılan bir indeksleme yöntemidir. Normal indeksleme yöntemlerinden farklı olarak, sadece bir kelimenin tam olarak eşleştiği değil, belirli bir metinde bulunan kelimelerin tamamının aranmasını sağlar. Bu, tam metin aramalarının daha etkili ve doğru sonuçlar verebilmesini sağlar.

Full-Text İndeksleri, VARCHAR, TEXT veya CHAR gibi belirli alan türleri ile kullanılabilir. Bu indeksleme yöntemi, bir metnin içinde aranacak olan kelimeleri anahtar kelimeler olarak tanımlar. Bu anahtar kelimeleri kullanarak, sorgu sonucu olarak dönülecek olan kayıtların belirlenmesi kolaylaşır.

Aranan Metin Full-Text İndeksi Kullanılmadan Sonuç Full-Text İndeksi Kullanılarak Sonuç
MySQL Amet, consectetur adipiscing elit, sed do eiusmod. Amet, MySQL adipiscing elit, sed do eiusmod.
Sorgu Optimizasyonu Lorem ipsum dolor sit amet, sorgu adipiscing elit, sed do eiusmod tempor incididunt. Lorem ipsum dolor sit amet, sorgu optimizasyonu adipiscing elit, sed do eiusmod tempor incididunt.

Full-Text İndeksleri'nin avantajı, diğer indeksleme metotlarına göre daha hızlı çalışmalarıdır. Aynı zamanda, belirli bir metinde bulunan kelimelerin tümüyle eşleşmelerini sağlamak için kullanılan LIKE işlevinden daha doğru sonuçlar verirler. Ancak, bu yöntemin dezavantajı, indekslenecek verilerin boyutu tarafından belirlenen sınırlamalardır. Örneğin, İngilizce metinler için indekslenebilecek en uzun kelime 84 karakterdir.

Full-Text İndeksleri kullanarak, belirli bir metindeki anahtar kelimeleri arayabilir ve sonuçları hızlı ve doğru bir şekilde elde edebilirsiniz. Bu, MySQL'de tam metin aramalarının daha etkili ve verimli hale gelmesini sağlayacaktır.


MySQL Sorgu Optimizasyonu

MySQL veritabanındaki performans sorunlarının birçoğu sorguların doğru bir şekilde optimize edilmemesinden kaynaklanmaktadır. Sorgu optimizasyonu, sorguların daha hızlı çalışmasını ve performansın artmasını sağlar. Bu nedenle, sorgu optimizasyonu yapmak, veritabanındaki performans problemlerini çözmek için önemlidir.

MySQL sorgu optimizasyonu için birkaç öneri mevcuttur. Öncelikle, sorgunun yapısı gözden geçirilmelidir. Sorgunun nasıl yazıldığına bağlı olarak, sorgu performansının farklı şekillerde etkilenebilir. Sorguyu optimize etmek için bazı temel ipuçları şunları içerir:

İpuçları Açıklamaları
İndeks kullanımı Tabloların doğru şekilde endekslenmesi, sorgu performansının artmasını sağlar.
JOIN'lerin sıralanması JOIN sıralaması, sorgu performansını optimize eder.
VERİ tabanı önbelleklemesi Sıklıkla kullanılan sorguların önbelleğe alınması, sorgu performansını artırır.
Küçük sorgular Küçük sorguların performansı daha iyidir. Büyük sorgular, sunucu performansını etkileyebilir.

Bunlar optimize edilmiş sorgular yazarken dikkate alınması gereken bazı basit önerilerdir. Ayrıca, MySQL veritabanından gelen sorguların izlenmesi ve analiz edilmesi için MySQL Query Profiler aracı kullanılabilir. Bu araç, sorguların performans sorunlarını tanımlayarak en iyi sorgu performansını sağlamak için rehberlik sağlar.

Yukarıdaki öneriler, MySQL veritabanı sorgu performansını artırmak için optimize edilmiş sorgular yazarken dikkat edilmesi gereken alanların başında gelir. Doğru sorgu optimizasyonu yöntemleri kullanarak, sorguların performansını optimize edebilir ve veritabanındaki performans problemlerinin üstesinden gelebilirsiniz.


Sorgu Yapısının Gözden Geçirilmesi

Sorguların performansı, yapısının optimize edilmesiyle büyük ölçüde arttırılabilir. Sorgunun yapısını analiz etmek ve optimize etmek için birkaç farklı teknik kullanılabilir:

  • Join Yapısının Gözden Geçirilmesi: Join işleminin doğru bir şekilde yapılandırılması, performansı önemli ölçüde artırabilir. Eğer bir sorguda birkaç tablo birleştiriliyorsa, hangi tabloların önce birleştirilmesinin daha iyi olacağını belirlemek için join yapısının yeniden düzenlenmesi gerekebilir.
  • Indexlerin Gözden Geçirilmesi: Sorgunun çıktısını etkilemeden, hangi sütunların indexlenmesi gerektiği belirlenerek, sorgu performansı artırılabilir.
  • Alt Sorguların Etkisini Kontrol Etme: Bazı sorgularda alt sorgular kullanılır. Alt sorguların performansı, sorgunun tamamına etki edebilir. Bu nedenle alt sorguların optimizasyonu sorgunun performansını arttırmaya yardımcı olabilir.

Sorgunun optimize edilmesi, veritabanındaki tabloların yapısından da etkilenebilir. Örneğin, gereksiz sütunların kaldırılması veya sütunların daha az veri içeren tiplerle değiştirilmesi gibi yapısal değişiklikler de sorguda önemli bir performans artışı sağlayabilir.


MySQL Sorgu Optimizasyonu İpuçları

Veritabanı performansını artırmak için sorgu optimizasyonu çok önemlidir. MySQL'de sorgu optimizasyonu yaparken, pratik ipuçları ile daha iyi sonuçlar elde edebilirsiniz. İşte MySQL sorgu optimizasyonu için bazı ipuçları:

  • Sorgu önbellekleme: Sık kullanılan sorguların önbelleğe alınması, performansı artırır.
  • JOIN sıralaması: Doğru JOIN sıralaması, sorguların daha hızlı çalışmasını sağlar. Büyük tablolarda, sorgu performansını artırmak için JOIN'leri azaltabilirsiniz.
  • Diğer optimizasyon teknikleri: MySQL optimize etme özellikleri arasında kümeleme indeksleri, harici anahtarlar, sorgulama önbelleği ve sorgu sınırlandırması gibi faydalar bulunur ve bunları da kullanabilirsiniz.

Bu ipuçlarını kullanarak sorgu performansınızı artırabilir, veritabanı performansında belirgin bir iyileşme elde edebilirsiniz. Ayrıca, sorgu ölçeği arttıkça, özellikle önbellekleme örneği, sorgularınızın hız kazanmasına yardımcı olabilir.


MySQL Sorgu Geliştirme Aracı (MySQL Query Profiler)

MySQL Query Profiler, sorgu performansının analiz edilmesinde kullanılan bir araçtır. Sorguların ne kadar sürede çalıştığını, hangi adımların en çok zaman aldığını ve hangi adımların tekrarlandığını inceleyebilirsiniz. Bu, sorgularınızdaki darboğazları tespit ederek performansı artırmanıza yardımcı olur.

MySQL Query Profiler'ı kullanarak sorguların performansını artırmak için ilk yapmanız gereken şey, profillerin belirli bir sorgu türü ve tarihe göre toplanmasını sağlamaktır. Profili toplamak için aşağıdaki komutu kullanabilirsiniz:

SET profiling = 1;

Daha sonra, sorgularınızı çalıştırabilirsiniz. Sorgularınız tamamlanınca, aşağıdaki komutu kullanarak profillemeyi durdurabilirsiniz:

SET profiling = 0;

Profillemeyi durduktan sonra, sonuçları görmek için aşağıdaki sorguyu kullanabilirsiniz:

SHOW PROFILES;

Bu sorgu, profilin adını, harcanan süreyi ve veritabanında kullanılan işlem sayısını içeren bir çıktı döndürür.

Ayrıntılı bir rapor almak için, aşağıdaki sorgulardan birini veya her ikisini de kullanabilirsiniz:

SHOW PROFILE ALL FOR QUERY 1;

veya

SHOW PROFILE CPU FOR QUERY 1;

Bu sorguların sonucu, sorgu adımlarının tamamını ve her bir adımın harcadığı süreyi içeren bir rapor döndürür.

MySQL Query Profiler ayrıca, sorguların ürettiği verileri analiz ederek, yavaş ve yinelenen sorguları tespit etmenize yardımcı olan ek bir araç olan "Query Analysis" raporu sunar.

MySQL Query Profiler, sorgu performansını analiz etmek için çok yararlı bir araçtır. Sorgu optimizasyonu için diğer yöntemlerle birlikte, sorgu hızını önemli ölçüde artırabilir ve veritabanı performansını artırabilirsiniz.


MySQL Sunucu Ayarları

MySQL sunucu ayarları, veritabanı sunucusunun performansını artırmak ve daha iyi bir sorgu performansı sağlamak için yapılandırılabilir. Bu ayarlar, veri depolama, tamponlama, önbellekleme ve diğer optimize edilmiş ayarlardan oluşmaktadır.

Bir MySQL sunucu ayarını yapılandırmadan önce, sunucunun kapasitesine, kullanımına ve amaçlarına bağlı olarak yapılması gerekenlere karar vermek önemlidir. Sunucuda nelerin yapıldığı, veritabanının boyutu ve kullanıcı sayısı hakkında bilgi sahibi olmak, doğru yapılandırma için gereklidir.

Bu ayarların bir kısmı my.ini dosyasından veya MySQL Yönetici Aracı'ndan yapılandırılabilir. MySQL sunucu ayarlarının bazı örnekleri aşağıda listelenmiştir:

  • max_connections: Aynı anda kaç bağlantı olabileceğini belirler.
  • key_buffer_size: İndexleri önbelleğe almak için kullanılır ve index boyutuna bağlı olarak ayarlanmalıdır.
  • query_cache_size: Sorguların önbelleğe alınmasını sağlar ve sorgu sıklığına ve boyutuna göre ayarlanmalıdır.
  • innodb_buffer_pool_size: Verileri RAM'da saklamak için kullanılır ve boyutu, kullanıcının veri belleği gereksinimlerine ve disk E/S yüküne bağlı olarak ayarlanmalıdır.
  • thread_cache_size: İş parçacığı oluşturma maliyetini azaltır ve sunucu kapasitesine ve kullanıcı sayısına göre ayarlanabilir.

Bu ayarlar, MySQL sunucusunun performansını önemli ölçüde artırabilir, ancak yapılandırmaları bir uzmanlık alanıdır ve dikkatli bir şekilde yapılmalıdır. MySQL sunucu ayarlarının yapılandırılması, veritabanı uygulaması için gereksinimleri doğru bir şekilde belirlemenize yardımcı olacak bir süreç gerektirir. Bu nedenle, bir profesyonelden yardım almak önerilir.


MySQL Sunucu Ayarlarının Analizi

MySQL sunucusunun performansını artırmak için yapılandırabileceğiniz belirli ayarlar vardır. İlk olarak, sunucu önbelleği ayarlarına bakalım. Önbellek, veritabanı sunucusu performansını iyileştirmenin önemli bir yoludur. MySQL sunucunuzda herhangi bir sorgu yapıldığında, performansı artırmak için önbellekler bölümleri saklar. Yüksek TPR (Transaction per second) gerektiren hizmetlerde önbellekleme kullanımı oldukça yararlıdır.

Bir diğer önemli ayar ise iş parçacığı sayısıdır. MySQL sunucusu birçok iş parçacığını eşzamanlı olarak işleyebilir. Bu sayı özellikle verimli kullanıcı ve veri trafiği durumlarında önemlidir.

  • Bir CPU veya tek bir çekirdek varken, sisteminizde bir iş parçacığı kullanın.
  • Bir sistemde birden fazla CPU veya birden fazla çekirdek varsa, her çekirdeğe bir iş parçası atayın. Örneğin, 16 çekirdekli bir sunucuda 16 iş parçası kullanılabilir.

MySQL sunucunun diğer bir temel yapılandırma ayarı, veri dosyalarının nereye kaydedildiğini belirleyen "datadir" parametresidir. Bu parametre genellikle varsayılan olarak "/ var / lib / mysql" şeklindedir, ancak sunucunun disk konfigürasyonuna bağlı olarak değişebilir. Ayrıca tamponlama ve diğer optimize edilmiş ayarlar da sunucu performansını artırmak için dikkate alınması gereken diğer ayarlardır.


MySQL Sunucu Ayarlarının Optimizasyonu

MySQL sunucunuzun performansını artırmak için MySQL sunucu ayarlarını da optimize etmeniz gerekiyor. İşte, performansınızı artırmak için bazı veri depolama, tamponlama, önbellekleme ve diğer optimize edilmiş ayarlar.

Veri Depolama:

MySQL, tablolarınızın verilerini ve dizinlerini veritabanı dosyalarında saklar. Gelen istekler doğrultusunda belirli tablo verilerini ve dizinlerini belleğe yükler. Bunun yanı sıra, birden fazla veri depolama motoru da kullanabilirsiniz. En popülerlerinden biri InnoDB, bu motor genellikle performans açısından daha iyidir.

Tamponlama:

MySQL, tamponlama tarafından yönetilen birden fazla bellek türü sağlar. İki önde gelen tamponlama türleri "anahtar önbelleği" ve "tampon havuzu". Anahtar önbellekleri, sık erişilen verileri veya sorguları saklamak için kullanılırken, tampon havuzları, tamponlama belleğinde daha fazla kullanımla mümkün olan ekstra veri için kullanılır.

Önbellekleme:

MySQL sorguları önbelleğe alınabilir, bu da daha hızlı yanıt süreleri ve daha az sunucu yüküne neden olur. Önbelleğe alma seçeneği, SELECT, SHOW ve DESCRIBE gibi sorgu türleri için kullanılabilir. Sorgu önbellekleme ayarlarınızı otomatikleştiren bir eklenti olan Memcached'i de kullanabilirsiniz.

Diğer optimize edilmiş ayarlar:

  • thread_cache_size: bu özelliği açmak, iş parçacığı sayısını azaltabilir ve daha hızlı bir sunucu geri dönüşü elde edebilirsiniz.
  • query_cache_limit: bu, sorgu önbelleklemesi için bir sınır belirler.
  • query_cache_size: bu, sorgu önbelleklemesi için sunucu tarafından ayrılan bellek miktarını belirler.

Yukarıda açıklanan özellikler, MySQL sunucunuzun performansını önemli ölçüde artıracaktır. Ayrıca, sunucu yükünü de azaltmaya yardımcı olurlar.


Örnek Senaryolar

MySQL indeksleme ve sorgu optimizasyonu teknikleri gerçek hayatta birçok senaryoda kullanılabilmektedir. Örneğin, bir e-ticaret sitesindeki ürün kataloğundaki hızlı arama özelliğini optimize etmek gerekebilir. Bu durumda, tam metin aramaları için full-text indeksleri kullanmak iyi bir seçenek olabilir.

Bir diğer senaryo, büyük bir veritabanında karmaşık sorguların hızlandırılması gerektiği durumdur. Bu durumda, sorgu yapısının ve indekslerin düzenlenmesi gerekebilir. Örneğin, çok fazla veri içeren bir sorguda JOIN işlemleri kullanmak yerine, alt sorguların kullanılması daha hızlı sonuçlar verebilir.

Bir başka senaryo, bir blog sitesindeki yorum bölümünün optimize edilmesi gerektiği durumlardır. Bu durumda, sorgu performansını artırmak için mevcut indekslerin gözden geçirilmesi ve gerekli indekslerin oluşturulması gerekebilir. Ayrıca, sorguların önbellekleme özelliğini kullanmak da performansı artırabilir.

Yukarıdaki senaryolar, MySQL indeksleme ve sorgu optimizasyonu tekniklerinin gerçek hayattaki kullanım örneklerinden sadece birkaçıdır. Her senaryo farklı gereksinimler ve zorluklar sunabilir, bu nedenle her senaryo için farklı bir optimizasyon stratejisi gereklidir.