MariaDB Performans Ayarları
MariaDB Nedir?
MariaDB, MySQL'in orijinal geliştiricileri tarafından geliştirilmiş, açık kaynak kodlu, ilişkisel bir veritabanı yönetim sistemidir (RDBMS). MySQL ile yüksek düzeyde uyumluluğu sayesinde mevcut uygulamaların kolayca MariaDB'ye geçirilmesine olanak tanır. Gelişmiş özellikler, daha iyi performans ve artırılmış güvenlik sunarak web uygulamaları, kurumsal sistemler ve veri ambarları gibi geniş bir kullanım alanı bulur.
MariaDB Nasıl Çalışır?
MariaDB, istemci uygulamalarından gelen SQL sorgularını alır ve bunları işleyerek veritabanı üzerinde gerçekleştireceği işlemlerin planını oluşturur. Bu süreç şu adımları içerir:
- İstek Alma: İstemci uygulamaları, TCP/IP veya Unix soketleri aracılığıyla MariaDB sunucusuna SQL komutları gönderir.
- Sorgu Ayrıştırma ve Doğrulama: Sunucu, gelen SQL sorgusunu ayrıştırır, sözdizimini kontrol eder ve yetkilendirme denetimlerini yapar.
- Sorgu İşleyici: Ayrıştırılmış sorgu, sorgu işleyici tarafından işlenir. Bu aşamada, sorgunun yürütülme planı optimize edilir. MariaDB, sorgunun en verimli şekilde nasıl çalıştırılacağını belirlemek için indeksleri, istatistikleri ve önbelleği kullanır.
- Depolama Motoru Etkileşimi: Sorgu işleyici, verilerin fiziksel olarak saklandığı depolama motoruna (örneğin, InnoDB, MyISAM) iletilir. Depolama motoru, verileri okur, yazar veya günceller.
- Yanıt Döndürme: Depolama motorundan gelen sonuçlar, sorgu işleyici tarafından derlenir ve istemci uygulamasına geri gönderilir.
MariaDB'nin mimarisi, istemci protokolü, sorgu ayrıştırıcısı, sorgu optimize edicisi, sorgu yürütücüsü, depolama motoru arayüzü ve çeşitli depolama motorlarını içerir. Bu modüler yapı, farklı depolama ihtiyaçlarına göre özelleştirmeler yapılmasına imkan tanır.
MariaDB Performans Ayar Parametreleri
MariaDB'nin performansını optimize etmek için en sık kullanılan ve en etkili ayar parametreleri şunlardır:
innodb_buffer_pool_size: InnoDB depolama motoru tarafından kullanılan bellek alanının boyutunu belirler. Bu tampon havuzu, disk G/Ç'sini azaltmak için sık erişilen verileri bellekte tutar. Genellikle sunucunun RAM'inin %50-75'i kadar bir değere ayarlanması önerilir.query_cache_size(MariaDB 10.1 ve öncesi) /query_cache_type: Daha önceki sürümlerde, tekrarlayan sorguların sonuçlarını önbelleğe alarak performansı artırabilirdi. Ancak, yüksek eşzamanlılık durumlarında önbellek kilitlenmeleri nedeniyle performans sorunlarına yol açabilir. MariaDB 10.1'den sonra kaldırılmıştır.max_connections: Sunucunun aynı anda kabul edebileceği maksimum istemci bağlantı sayısını belirler. Uygulamanın ihtiyaçlarına göre ayarlanmalı, ancak çok yüksek değerler kaynak tüketimini artırabilir.innodb_log_file_size: InnoDB işlem günlük dosyalarının boyutunu belirler. Daha büyük günlük dosyaları, daha seyrek checkpointing anlamına gelir ve yazma performansını artırabilir, ancak veri kurtarma süresini uzatabilir.innodb_flush_log_at_trx_commit: İşlem günlüklerinin diske ne sıklıkla yazıldığını kontrol eder.1değeri en güvenli (her işlemde diske yaz) ancak en yavaş olanıdır.2değeri, işletim sistemi önbelleğine yazar, bu da daha hızlıdır ancak sunucu çökmesi durumunda veri kaybı riski taşır.tmp_table_sizevemax_heap_table_size: Bellekte oluşturulan geçici tabloların maksimum boyutunu belirler. Bu boyutları artırmak, disk tabanlı geçici tabloların kullanımını azaltarak sorgu performansını iyileştirebilir.sort_buffer_size: Sıralama işlemleri için kullanılan tampon boyutunu ayarlar. Büyük sıralama işlemleri için bu değeri artırmak faydalı olabilir.join_buffer_size: Birleştirme (join) işlemleri sırasında kullanılan tampon boyutunu ayarlar.thread_cache_size: Sunucunun yeniden kullanmak üzere tuttuğu boş iş parçacığı (thread) sayısını belirler. Yeni bağlantılar kurulduğunda iş parçacığı oluşturma maliyetini azaltır.
Bu parametreler, my.cnf veya my.ini yapılandırma dosyası aracılığıyla ayarlanır ve MariaDB sunucusunun yeniden başlatılmasını gerektirir. Değişikliklerin etkisini gözlemlemek için performans izleme araçları kullanılmalıdır.
Veritabanı Optimizasyonu İçin Pratikler
MariaDB performansını artırmak için yalnızca yapılandırma parametrelerini ayarlamak yeterli değildir. Uygulama düzeyinde de çeşitli optimizasyon teknikleri uygulanmalıdır. Bu, genel veritabanı sağlığını ve performansını doğrudan etkiler.
- Sorgu Optimizasyonu: Yavaş çalışan sorguları tespit etmek ve bunları daha verimli hale getirmek, performans artışının en büyük kaynaklarından biridir.
EXPLAINkomutu kullanılarak sorgu yürütme planları incelenmeli ve gereksiz JOIN'ler, tam tablo taramaları ve karmaşık WHERE yan tümceleri optimize edilmelidir. - İndeks Kullanımı: Doğru indekslerin oluşturulması, sorgu performansını önemli ölçüde hızlandırır. Sık kullanılan WHERE, JOIN ve ORDER BY yan tümcelerinde kullanılan sütunlara indeks eklenmesi önerilir. Ancak, aşırı indeks kullanımı yazma performansını düşürebilir ve disk alanı tüketimini artırabilir.
- Veritabanı Tasarımı: Normalizasyon seviyesini doğru ayarlamak, veri tekrarını azaltır ve veri bütünlüğünü sağlar. Ancak, aşırı normalizasyon karmaşık sorgulara yol açabilir. Uygulamanın ihtiyaçlarına göre uygun bir denge kurulmalıdır.
- Veri Tipleri: Sütunlar için en uygun veri tiplerinin seçilmesi, disk alanı kullanımını azaltır ve sorgu performansını iyileştirir. Örneğin, sayısal veriler için uygun olan en küçük veri tipi (INT, SMALLINT vb.) kullanılmalıdır.
- Partitioning (Bölümleme): Büyük tabloları daha küçük, yönetilebilir parçalara ayırmak, sorgu performansını ve bakım işlemlerini (yedekleme, geri yükleme, indeks yeniden oluşturma) iyileştirebilir.
- İş Parçacığı Yönetimi:
thread_cache_sizegibi parametrelerle iş parçacığı havuzunu verimli yönetmek, bağlantı kurma maliyetini düşürür. - Bağlantı Havuzlama (Connection Pooling): Uygulama tarafında bağlantı havuzlama kullanmak, her istek için yeni bir veritabanı bağlantısı oluşturma ihtiyacını ortadan kaldırarak performansı artırır.
Bu pratikler, Veritabanı Optimizasyonu makalesinde daha detaylı olarak ele alınmaktadır.
MariaDB Yapılandırma Dosyası (my.cnf/my.ini)
MariaDB sunucusunun davranışını kontrol eden temel yapılandırma dosyası genellikle my.cnf (Linux/macOS) veya my.ini (Windows) olarak adlandırılır. Bu dosya, sunucu başlatıldığında yüklenir ve çeşitli parametrelerin değerlerini içerir. Dosyanın konumu işletim sistemine ve kurulum yöntemine göre değişiklik gösterebilir. Bazı yaygın konumlar şunlardır:
- Linux:
/etc/my.cnf,/etc/mysql/my.cnf,/etc/mysql/mariadb.conf.d/50-server.cnf - macOS (Homebrew):
/usr/local/etc/my.cnf - Windows:
C:\ProgramData\MySQL\MySQL Server X.X\my.ini
Yapılandırma dosyası, [mysqld] bölümü altında sunucuya özgü ayarları içerir. Örnek bir yapılandırma bölümü:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock pid-file=/var/run/mysqld/mysqld.pid log-error=/var/log/mysqld.log # Performans Ayarları innodb_buffer_pool_size = 2G innodb_log_file_size = 512M innodb_flush_log_at_trx_commit = 2 max_connections = 200 tmp_table_size = 128M max_heap_table_size = 128M sort_buffer_size = 4M join_buffer_size = 8M thread_cache_size = 16
Yapılandırma dosyasında yapılan değişiklikler, sunucunun yeniden başlatılmasından sonra geçerli olur. Her değişiklikten sonra, sistemin davranışını ve performansını dikkatlice izlemek önemlidir.
2026 Sektör Verileri ve İstatistikler
Veritabanı teknolojilerinin hızla evrildiği günümüzde, MariaDB gibi açık kaynaklı RDBMS'lerin pazar payı ve kullanım trendleri dikkat çekicidir. W3Techs 2026 verilerine göre, MariaDB'nin MySQL ile birlikte açık kaynak veritabanları arasındaki pazar payı istikrarlı bir şekilde artış göstermektedir. Statista 2026 raporuna göre, küresel veritabanı pazarının büyüklüğünün 2026 yılına kadar önemli ölçüde artması beklenmektedir ve bu büyümenin önemli bir kısmı bulut tabanlı ve açık kaynaklı çözümlerden kaynaklanmaktadır. Cloudflare Radar 2026 verilerine göre, web uygulamalarının performans ve güvenilirlik ihtiyaçları arttıkça, optimize edilmiş veritabanı çözümlerine olan talep de yükselmektedir. Netcraft 2026 araştırmasına göre, sunucu tarafı teknolojilerde açık kaynaklı çözümlerin hakimiyeti devam etmekte ve MariaDB bu eğilimden olumlu etkilenmektedir.
Sık Yapılan Hatalar ve Çözümleri
-
innodb_buffer_pool_sizeçok düşük ayarlanmışBu, disk G/Ç'sinin artmasına ve genel yavaşlamaya neden olur. Çözüm, sunucunun kullanılabilir RAM'inin büyük bir kısmını (genellikle %50-75) bu parametreye atamaktır.
-
Yetersiz veya yanlış indeks kullanımı
Sorguların tam tablo taramasına yol açması performans düşüklüğüne neden olur. Çözüm,
EXPLAINile sorgu planlarını analiz etmek ve doğru indeksleri oluşturmaktır. -
innodb_flush_log_at_trx_commit = 1ile yüksek yazma yüküHer işlem için diske yazma, yazma performansını önemli ölçüde düşürebilir. Yoğun yazma işlemleri olan ortamlarda
innodb_flush_log_at_trx_commit = 2gibi bir değere geçmek performansı artırabilir, ancak sunucu çökmesi durumunda küçük veri kayıpları riski vardır. -
Aşırı
max_connectionsdeğeriÇok yüksek bir
max_connectionsdeğeri, sunucunun kaynaklarını aşırı tüketebilir ve kararsızlığa yol açabilir. Çözüm, gerçekçi bir bağlantı adedi belirlemek ve bağlantı havuzlamayı kullanmaktır. -
Karmaşık ve optimize edilmemiş sorgular
Veritabanı performansının ana düşmanlarından biridir. Çözüm, sorgu optimizasyonu tekniklerini uygulamak ve
EXPLAINkomutunu etkin kullanmaktır.
Teknik Özellikler ve Standartlar
MariaDB, SQL (Structured Query Language) standardına büyük ölçüde uymaktadır. InnoDB depolama motoru, ACID (Atomicity, Consistency, Isolation, Durability) özelliklerini destekleyerek veri bütünlüğünü ve güvenilirliğini sağlar. Veri iletişimi için standart TCP/IP protokolünü kullanır. Performans ayarlamaları için kullanılan parametreler, genellikle MariaDB'nin kendi dokümantasyonunda ve topluluk tarafından belirlenen en iyi uygulamalara dayanır. Veritabanı şema tasarımlarında, normalizasyon prensipleri ve veri tipi seçimi gibi ilişkisel veritabanı tasarımı standartları geçerlidir.
İlgili Konular
MariaDB performansını daha etkin yönetmek için veritabanı optimizasyonu tekniklerini anlamak önemlidir. Bu konuyla ilgili detaylı bilgi edinmek için Veritabanı Optimizasyonu makalesini inceleyebilirsiniz.

