Excel'e Aktar Neden Zaman Aşımına Düşer? Çözüm Yolları
Excel'e aktar düğmesi uzun süre bekleyip sonunda hata veriyorsa sorun çoğu zaman Excel dosyasının kendisinde değil, isteğin tarayıcı beklerken bütün satırları tek seferde hazırlamaya çalışmasındadır. Kalıcı çözüm dosyayı istek süresi içinde üretmekten vazgeçmek, arka planda hazırlayıp bittiğinde kullanıcıya indirme bağlantısı vermektir. Aşağıda zaman aşımının hangi katmanda oluştuğunu nasıl ayırt edeceğinizi, dışa aktarmayı hafifletmenin yollarını ve CSV ile XLSX arasındaki pratik farkı bulacaksınız.
Zaman aşımı hangi katmanda oluşuyor?
Kullanıcı tek bir hata görür ama o hatanın kaynağı beş ayrı yerde olabilir. Teşhise başlamadan yapılan her iyileştirme tahmindir, çünkü yanlış katmanı hızlandırmak sonucu değiştirmez.
- Tarayıcı: İstek açık kalır, kullanıcı sekmeyi yeniler ya da bağlantı kopar. Bu durumda sunucu tarafında iş sessizce devam eder, bazen ikinci kez başlar.
- Web sunucusu: Bir isteğin ne kadar sürebileceği sınırlıdır. Sınır aşıldığında süreç kesilir, uygulama günlüğünde yarım kalmış bir iş görünür.
- Uygulama: Satırlar bellekte biriktirilip sonunda dosyaya yazılıyorsa bellek sınırı dolar; süreç zaman aşımı yerine bellek hatasıyla düşer.
- Veritabanı: Sorgu gereğinden fazla tablo birleştiriyor ya da uygun bir dizin kullanmıyorsa satır sayısı arttıkça süre doğrusal değil, çok daha hızlı büyür.
- Aradaki vekil sunucu ve güvenlik katmanı: Uygulamanın kendi sınırından daha kısa bir süre sınırı koyabilir; uygulama hâlâ çalışırken kullanıcı hata alır.
Ayırt etmenin en hızlı yolu aynı dışa aktarmayı daraltarak denemektir. Tek günlük veriyle saniyeler içinde biten bir çıktı bir aylık veride düşüyorsa sorun hacimle büyüyen tarafta, yani sorguda ya da bellektedir. Küçük veride de yavaşsa sorgunun kendisi baştan ağırdır ve satır sayısıyla ilgisi yoktur.
Dosyayı arka planda üretmek
Doğru kurgu kullanıcının isteğini dosyaya değil, bir iş kaydına çevirmektir. Kullanıcı düğmeye bastığında sistem talebi kaydeder, ekranda durum gösterir ve kullanıcıyı serbest bırakır. Dosya hazır olduğunda indirme bağlantısı kullanıcının hesabında görünür.
Bu kurgunun işe yaraması için iş kaydının birkaç alanı olması gerekir: talebi kim açtı, hangi filtrelerle açtı, durumu nedir (bekliyor, üretiliyor, hazır, hata), kaç satır üretildi ve dosya nerede duruyor. Hata durumunda neden bilgisinin saklanması destek tarafında en çok zaman kazandıran alandır; kullanıcı yeniden denemeden önce sorunun geçici mi kalıcı mı olduğu görülür.
Aynı kullanıcının aynı filtrelerle üst üste talep göndermesi de sık görülen bir durumdur. Açık bir talep varken ikincisini üretmek yerine mevcut talebi göstermek hem sunucuyu hem kullanıcıyı korur.
Sorguyu ve dosyayı hafifletmek
Arka plana almak zaman aşımını kaldırır ama işi hızlandırmaz. Çıktının kendisi de hafifletilmelidir.
- Parça parça okuma: Bütün sonucu tek hamlede almak yerine sıralı bir anahtara göre bloklar hâlinde okumak belleği sabit tutar.
- Satır başına ek sorgu yapmamak: Her satır için ayrı bir bakış sorgusu çalışıyorsa süre satır sayısıyla çarpılır. İlgili veriler tek sorguda birlikte alınır.
- Gereksiz sütunu çıkarmak: Hiç kullanılmayan kırk sütunlu çıktılar yaygındır. Kullanıcıya hangi sütunların gerektiğini sormak en ucuz iyileştirmedir.
- Hesabı veritabanına bırakmak: Toplam, sayım ve gruplama uygulamada satır satır yapılmak yerine sorguda yapılır.
- Akışlı yazma: Dosya biriktirilip sonunda yazılmaz; üretildikçe diske ya da yanıta akıtılır.
- Ayrı okuma kaynağı: Ağır raporlar canlı işlemlerin çalıştığı yeri yavaşlatıyorsa okuma işleri ayrı bir kopyadan beslenir.
CSV mi XLSX mi?
İki biçimin tercih sebebi farklıdır ve yanlış seçim hem dosya boyutunu hem destek yükünü artırır.
| Ölçüt | CSV | XLSX |
|---|---|---|
| Üretim maliyeti | Düşük, satır satır akıtılabilir | Yüksek, biçim bilgisi de üretilir |
| Dosya boyutu | Aynı veride daha küçük | Sıkıştırılmış olsa da daha büyük |
| Biçimlendirme | Yok | Başlık, sütun genişliği, sayı biçimi |
| Çoklu sayfa | Yok, her çıktı tek tablo | Var, özet ve detay ayrılabilir |
| Türkçe karakter | Kodlama belirtilmezse bozuk görünebilir | Kodlama dosyanın içinde taşınır |
| Baştaki sıfır ve uzun numara | Elektronik tabloda sayıya çevrilip kırpılabilir | Metin olarak işaretlenebilir |
Pratik kural şudur: başka bir sisteme veri aktarılıyorsa CSV, insan açıp okuyacaksa XLSX. Baştaki sıfırı korumak gereken stok kodu, vergi numarası ve barkod gibi alanlarda CSV tercih edildiğinde alanın metin olduğunu belirtmek gerekir, yoksa dosya doğru üretilse de ekranda yanlış görünür.
Dışa aktarılan dosya kimin elinde?
Dışa aktarma, yetki kurgusunun en kolay delindiği yerdir. Ekranda yalnızca kendi şubesini görebilen bir kullanıcı, dışa aktarmada filtre uygulanmadığı için bütün şubelerin verisini indirebiliyorsa sorun ekranda değil çıktıdadır. Dışa aktarma sorgusu, ekranı besleyen sorguyla aynı yetki süzgecinden geçmelidir.
Üretilen dosyanın kendisi de veridir. Tahmin edilemeyen bir adla saklanması, yalnızca talebi açan kullanıcıya açılması ve belirli bir süre sonra silinmesi gerekir. Kimin hangi kapsamda dışa aktarma yaptığının kaydı, veri kaybı tartışmalarında sonradan üretilemeyen tek kanıttır.
Kısa kontrol listesi
- Hata hangi katmanda çıkıyor: küçük aralıkla deneyip hacme bağlı mı diye bakın.
- Uzun süren çıktılar tarayıcı beklerken değil, arka planda üretiliyor mu?
- İş kaydında durum, filtre, satır sayısı ve hata nedeni duruyor mu?
- Sorgu parça parça okuyor mu, satır başına ek sorgu var mı?
- Biçim seçimi doğru mu, metin alanları kırpılmıyor mu?
- Dışa aktarma ekranla aynı yetki süzgecini kullanıyor mu, dosya ne kadar saklanıyor?
KAV Yazılım, mevcut sistemlerde raporlama ve dışa aktarma akışlarını bu başlıklara göre inceleyip arka planda çalışan, yetkiye saygılı bir kurguya taşıyor.
Sık sorulan sorular
Dışa aktarma kaç satıra kadar doğrudan yapılabilir?
Dosya üretilirken kullanıcı sayfadan çıkarsa ne olur?
CSV dosyasında Türkçe karakterler neden bozuk görünüyor?
Rapor çıktısı ile ekrandaki liste neden farklı satır sayısı veriyor?
- dışa aktarma
- performans
- rapor çıktısı
- zaman aşımı
