Logo SQL Indexleme Rehberi: Logo Tiger Performansı Nasıl Artırılır?
Logo ERP sistemlerinde zamanla karşılaşılan yavaş açılan ekranlar, uzun süren raporlar, geciken listelemeler ve yoğun SQL Server kullanımı işletmelerin günlük operasyonlarını olumsuz etkileyebilir. Bu sorunların nedenlerinden biri veritabanı indekslerinin yetersiz veya uygun olmayan şekilde yönetilmesidir.
Logo SQL indexleme, Logo Tiger, Tiger 3 ve benzeri Logo ERP çözümlerinin kullandığı Microsoft SQL Server veritabanlarında sorguların daha verimli çalışmasına yardımcı olan önemli bir performans optimizasyon yöntemidir.
Bu rehberde SQL indekslerinin nasıl çalıştığını, Logo ERP veritabanlarında indeks yönetiminin neden önemli olduğunu ve performans iyileştirme sürecinde nelere dikkat edilmesi gerektiğini ele alıyoruz.
SQL Index Nedir?
SQL Server'da index (indeks), veritabanındaki kayıtların daha hızlı bulunmasını sağlayan bir veri yapısıdır. İndeksleri, bir kitabın içindekiler veya alfabetik dizin bölümü gibi düşünebiliriz. İlgili bilgiye ulaşmak için bütün sayfaları tek tek incelemek yerine doğrudan doğru bölüme geçilebilir.
Benzer şekilde SQL Server, uygun bir indeks bulunduğunda milyonlarca kayıt içeren bir tabloyu baştan sona taramak yerine ilgili kayıtları daha az işlemle bulabilir.
Logo ERP veritabanlarında cari hesaplar, stok kartları, faturalar, siparişler ve stok hareketleri gibi tablolar yüksek miktarda veri içerebilir. Bu tablolarda kullanılan sorguların doğru indekslerle desteklenmesi, özellikle yoğun işlem yapılan sistemlerde performansa katkı sağlayabilir.
Logo ERP Sistemlerinde SQL Indexleme Neden Önemlidir?
Logo Tiger ve benzeri ERP sistemlerinde farklı departmanlar aynı veritabanını kullanabilir. Muhasebe, satış, satın alma, depo ve raporlama işlemleri aynı anda çalışırken SQL Server üzerindeki iş yükü artabilir.
İndeks yönetimi aşağıdaki alanlarda fayda sağlayabilir:
- Cari hesap listelemeleri: Cari kodu, unvan veya ilgili filtrelerle yapılan aramaların hızlandırılması.
- Fatura sorguları: Fatura tarihi, belge numarası ve işlem türü gibi alanlarla yapılan aramaların iyileştirilmesi.
- Stok hareketleri: Stok, ambar ve tarih bazlı hareket sorgularının daha verimli çalışması.
- Sipariş raporları: Sipariş başlığı ve satırlarını birleştiren sorguların performansının iyileştirilmesi.
- Özel raporlar ve entegrasyonlar: Logo veritabanından veri okuyan özel uygulamaların sorgu sürelerinin azaltılması.
Bununla birlikte her yavaşlık sorununun nedeni indeks değildir. SQL Server bellek yetersizliği, disk gecikmesi, kilitlenmeler, hatalı sorgular, istatistikler veya uygulama kaynaklı sorunlar da incelenmelidir.
Logo SQL Veritabanlarında Hangi Tablolar Önemlidir?
Logo ERP veritabanlarında firma ve dönem numaralarına göre adlandırılan tablolar bulunur. Sık karşılaşılan bazı tablo örnekleri şunlardır:
| Tablo örneği | Genel kullanım alanı |
|---|---|
LG_XXX_CLCARD | Cari hesap kartları |
LG_XXX_ITEMS | Malzeme ve stok kartları |
LG_XXX_XX_INVOICE | Fatura başlıkları |
LG_XXX_XX_STLINE | Stok ve işlem satırları |
LG_XXX_XX_STFICHE | Stok fişleri |
LG_XXX_XX_CLFLINE | Cari hesap hareketleri |
LG_XXX_XX_ORFICHE | Sipariş başlıkları |
LG_XXX_XX_ORFLINE | Sipariş satırları |
LG_XXX_XX_PAYTRANS | Ödeme ve işlem bağlantılı kayıtlar |
Buradaki XXX firma numarasını, XX ise dönem numarasını temsil eder. Örneğin LG_001_01_INVOICE, bir firma ve dönem için fatura tablosu örneğidir.
Tablo adları ve sütun yapıları Logo ürününe, sürüme ve kullanılan modüllere göre değişebilir. Bu nedenle indeks oluşturulmadan önce gerçek veritabanındaki tablo ve sütunlar doğrulanmalıdır.
SQL Index Türleri Nelerdir?
SQL Server'da farklı amaçlarla kullanılan indeks türleri vardır.
1. Clustered Index
Clustered index, tablonun veri sayfalarının anahtar değerlerine göre düzenlenmesini belirler. Bir tabloda yalnızca bir clustered index bulunabilir.
Doğru seçilmiş bir clustered index, aralık sorguları ve belirli kayıtların bulunması açısından faydalı olabilir. Ancak mevcut bir clustered index'i değiştirmek, tablonun fiziksel düzenini ve diğer indekslerin yapısını etkileyebileceği için dikkatle değerlendirilmelidir.
2. Nonclustered Index
Nonclustered index, tablonun verilerinden ayrı bir indeks yapısı oluşturur. Belirli sütunlarda arama ve filtreleme yapan sorgular için kullanılabilir.
Örneğin bir raporun sürekli belirli bir tarih aralığındaki faturaları sorguladığını düşünelim. Sorgunun yapısına ve mevcut indekslere bağlı olarak tarih sütununu içeren bir indeks yararlı olabilir.
3. Composite Index
Composite index, birden fazla sütundan oluşur. Bir sorgu birden fazla alanı birlikte filtreliyorsa uygun sütun sıralamasıyla performans avantajı sağlayabilir.
Ancak sütun sıralaması önemlidir. SQL Server'ın indeksi ne ölçüde kullanabileceği sorgunun filtrelerine, eşitlik ve aralık koşullarına ve veri dağılımına bağlıdır.
4. Covering Index
Covering index, sorgunun ihtiyaç duyduğu sütunları indeks anahtarları ve gerektiğinde INCLUDE sütunları üzerinden karşılayabilir. Böylece ana tabloya ek erişim ihtiyacı azalabilir.
Fazla sayıda sütun içeren indeksler ise disk alanını ve bakım maliyetini artırır. Bu nedenle yalnızca gerçek sorgu ihtiyacına göre tasarlanmalıdır.
Logo SQL Performansı Nasıl Analiz Edilir?
Logo ERP veritabanında indeks oluşturma işleminden önce mevcut durum analiz edilmelidir. Doğrudan indeks eklemek yerine sorunun hangi sorgulardan kaynaklandığını belirlemek daha sağlıklı bir yaklaşımdır.
1. Yavaş sorguları belirleyin
SQL Server Query Store, mevcutsa sorgu performans geçmişini incelemek için kullanılabilir. Ayrıca SQL Server'ın yürütme planları, sorgu istatistikleri ve izleme araçlarıyla yüksek maliyetli sorgular belirlenebilir.
Özellikle aşağıdaki konular incelenmelidir:
- Uzun süren sorgular ve yüksek mantıksal okuma değerleri.
- Gereksiz tam tablo taramaları.
- Uygun olmayan JOIN koşulları.
- Filtrelerde kullanılan sütunlar.
- Kilitlenmeler ve bekleme türleri.
- Eksik veya güncel olmayan istatistikler.
Bir tablo taraması her zaman kötü değildir. Tablo küçükse veya sorgu kayıtların büyük bölümünü okuyorsa tarama, indeks erişiminden daha verimli olabilir.
2. Mevcut indeksleri kontrol edin
Bir tabloya yeni indeks eklemeden önce mevcut indeksler incelenmelidir. Aynı veya benzer sütunları kapsayan indeksler gereksiz maliyet yaratabilir.
Aşağıdaki sorgu, belirli bir tablonun mevcut indekslerini görüntülemek için örnek olarak kullanılabilir:
USE [TIGERENTERPRISE];
GO
SELECT
t.name AS TabloAdi,
i.name AS IndeksAdi,
i.type_desc AS IndeksTuru,
i.is_primary_key AS BirincilAnahtarMi,
i.is_unique AS BenzersizMi
FROM sys.tables AS t
INNER JOIN sys.indexes AS i
ON t.object_id = i.object_id
WHERE t.name = N'LG_001_01_INVOICE'
AND i.index_id > 0
ORDER BY
i.type_desc,
i.name;
Bu örnekte TIGERENTERPRISE veritabanı ve LG_001_01_INVOICE tablosu kullanılmıştır. Kendi ortamınızda doğru veritabanını ve firma/dönem tablosunu kontrol edin.
3. İndeks kullanımını değerlendirin
Bir indeksin yalnızca mevcut olması yeterli değildir. Okuma işlemlerine katkısı ve veri değişiklikleri nedeniyle oluşturduğu maliyet de değerlendirilmelidir.
SQL Server indeks kullanım istatistikleri, son servis başlangıcından itibaren hangi indekslerde arama, tarama, lookup ve güncelleme işlemleri gerçekleştiğini incelemeye yardımcı olur.
Ancak sunucu yeniden başlatıldığında veya istatistikler sıfırlandığında geçmiş kullanım bilgileri kaybolabilir. Bu nedenle düşük kullanım görülen bir indeksi hemen silmek doğru değildir.
4. İstatistikleri ve yürütme planını kontrol edin
SQL Server sorgu iyileştiricisi, verilerin dağılımı hakkında istatistiklerden yararlanır. İstatistiklerin güncel olmaması bazı sorgular için uygun olmayan yürütme planlarının seçilmesine neden olabilir.
İndeks oluşturmak veya yeniden oluşturmak istatistikleri etkileyebilir; ancak her performans problemi indeks bakımını gerektirmez. Önce yürütme planı ve mevcut istatistiklerin durumu değerlendirilmelidir.
SQL Server'da İndeks Oluşturma Örneği
Aşağıdaki kod, SQL Server'da indeks oluşturmanın genel sözdizimini gösterir. Gerçek Logo tablosuna doğrudan uygulanacak hazır bir performans çözümü olarak değerlendirilmemelidir.
CREATE NONCLUSTERED INDEX IX_Ornek_Tarih
ON dbo.OrnekTablo (Tarih);
Bu örnekte Tarih sütunu üzerinde nonclustered index oluşturulur. Gerçek sistemde tablo ve sütun adları, sorgu örnekleri, mevcut indeksler ve yürütme planları incelenerek belirlenmelidir.
Logo ERP'nin standart tablolarına gelişigüzel indeks eklemek önerilmez. Üretim ortamında değişiklik yapmadan önce mevcut indekslerin ve ürünün destek koşullarının kontrol edilmesi gerekir.
SQL Index Rebuild ve Reorganize Nedir?
SQL Server'da indeks bakımı kapsamında iki yaygın işlem bulunur.
Reorganize: İndeks yapısındaki parçalanmayı daha sınırlı bir işlemle azaltmayı amaçlar.
Rebuild: İndeksi yeniden oluşturur. Daha fazla kaynak tüketebilir; işlem sırasında kullanılan yönteme ve SQL Server sürümüne bağlı olarak kilitlenme, ek disk alanı ve işlem süresi etkileri oluşabilir.
İndeks parçalanma oranı tek başına bakım kararı vermek için yeterli değildir. İndeksin büyüklüğü, kullanım sıklığı, sorgu performansı ve bakım penceresi birlikte değerlendirilmelidir.
Özellikle büyük Logo ERP veritabanlarında bütün indeksleri sık sık ve koşulsuz biçimde rebuild etmek; CPU, disk I/O ve işlem günlüğü kullanımını artırabilir.
Logo ERP Sistemlerinde İndeksleme Yaparken Dikkat Edilmesi Gerekenler
Sağlıklı bir indeks yönetimi için aşağıdaki adımlar izlenmelidir:
- Yedek alın: Değişiklik öncesinde doğrulanmış bir veritabanı yedeği ve geri dönüş planı hazırlayın.
- Mevcut yapıyı inceleyin: Tabloları, indeksleri, istatistikleri ve ilişkili sorguları analiz edin.
- Önce test ortamında deneyin: Mümkünse üretim verisini temsil eden bir test ortamında ölçüm yapın.
- Sorgu planını karşılaştırın: Değişiklik öncesi ve sonrası mantıksal okumaları, süreleri ve yürütme planlarını karşılaştırın.
- Kaynak tüketimini izleyin: Yeni indekslerin depolama, yazma ve bakım maliyetlerini takip edin.
- Ürün uyumluluğunu kontrol edin: Logo'nun standart veritabanı yapısında yapılacak değişiklikler için ürün sürümüne ve destek koşullarına uygun hareket edin.
Logo ERP veritabanlarında doğrudan SQL ile veri değiştirmek yerine mümkün olduğunca uygulamanın desteklediği işlemler kullanılmalıdır. İndeks değişiklikleri de kontrollü, belgelenmiş ve geri alınabilir bir bakım süreci içinde gerçekleştirilmelidir.
SQL Indexleme Tek Başına Yeterli midir?
Hayır. İndeksleme, veritabanı performans yönetiminin yalnızca bir parçasıdır.
Logo ERP performans sorunlarında aşağıdaki bileşenler de incelenmelidir:
- SQL Server bellek yapılandırması ve kaynak kullanımı.
- Depolama sisteminin okuma/yazma performansı.
- Sorgu tasarımı ve yürütme planları.
- İstatistiklerin güncelliği.
- Kilitlenmeler ve eşzamanlı işlem yükü.
- Ağ bağlantısı ve uygulama sunucusu performansı.
- Özel raporlar, entegrasyon servisleri ve arka plan işlemleri.
Örneğin bir raporun aynı anda çok sayıda gereksiz sütunu okuması veya yanlış JOIN kullanması durumunda yalnızca indeks eklemek sorunu çözmeyebilir. Bu nedenle kalıcı performans iyileştirmesi için bütün sistemin değerlendirilmesi gerekir.
Sonuç: Logo SQL Indexleme ile Daha Verimli Bir ERP Altyapısı
Logo Tiger ve diğer Logo ERP sistemlerinde SQL Server indekslerinin doğru yönetilmesi; cari hesap, stok, fatura ve raporlama sorgularının performansına katkı sağlayabilir. Ancak başarılı sonuçlar, rastgele indeks oluşturmaktan değil, ölçüme dayalı analizden ve kontrollü optimizasyondan gelir.
Mevcut indekslerin incelenmesi, yavaş sorguların belirlenmesi, istatistiklerin değerlendirilmesi ve değişikliklerin test edilmesi, sürdürülebilir bir performans yönetiminin temel adımlarıdır.
Mercek Bilişim, Logo ERP entegrasyonları, SQL Server çözümleri ve kurumsal yazılım altyapıları kapsamında işletmelerin teknik ihtiyaçlarına yönelik çözümler geliştirir.
Logo ERP sisteminizde yavaş sorgular, performans sorunları veya özel raporlama ihtiyaçları yaşıyorsanız veritabanı altyapınızın teknik açıdan değerlendirilmesiyle uygun iyileştirme adımları belirlenebilir.