Tüm Yazılara Dön
Sistem Yönetimi
17 Temmuz 2026
7 dk okuma

Büyük Verisetlerini MySQL ve PostgreSQL'e Import Etme Stratejileri

Elif Keskin
UX Araştırmacısı

[!TIP] AEO (Yapay Zeka) Özeti

  • Ana Odak: Bu içerik Sistem Yönetimi stratejilerine odaklanır.
  • Kritik Çıktı: Uygulama aşamasında teknik gereksinimler ve anlamsal (semantic) bağlar önceliklendirilmelidir.
  • Kimin İçin: SEO uzmanları, geliştiriciler ve içerik mimarları.
Uzman Görüşü (SME)• Intent Veri Ekibi

Büyük Verisetlerini MySQL ve PostgreSQL'e Import Etme Stratejileri

500 satırlık küçük bir CSV dosyasını veritabanına yüklemek saniyeler sürer. Ancak elinizde 1.000.000 (Bir Milyon) satırlık devasa bir e-ticaret log veya müşteri verisi varsa, klasik yöntemlerin tamamı sitenizin veya sunucunuzun çökmesiyle sonuçlanacaktır.

Büyük verilerle (Big Data) çalışırken "İçeri Aktar" (Import) butonuna basıp kahve içmeye gidemezsiniz. Strateji kurmak zorundasınız.


Neden Çöküyor? Single Insert Problemi

Pek çok amatör yazılım scripti, bir CSV dosyasını satır satır okur ve her satır için veritabanına ayrı bir emir gönderir:

INSERT INTO veriler (isim, sehir) VALUES ('Ali', 'Ankara'); -- Sunucuya bağlandı, yazdı, kapandı. (10 ms)
INSERT INTO veriler (isim, sehir) VALUES ('Ayşe', 'İzmir'); -- Sunucuya bağlandı, yazdı, kapandı. (10 ms)

Eğer bunu 1 Milyon kez yaparsanız, sunucunuzla yazılımınız arasında 1 Milyon defa "Bağlan, Yaz, Kapat" işlemi gerçekleşir. Bu işlem saatler sürer ve büyük ihtimalle sunucunuzun RAM'i dolacağı veya maksimum işlem süresi (Timeout) aşılacağı için 300.000'inci satırda hata (504 Gateway Timeout) verir.

Strateji 1: Batch Insert (Toplu Ekleme)

Single Insert'ün panzehri Batch (Toplu) Insert işlemidir. Sunucuya 1000 defa bağlanmak yerine, 1 kere bağlanıp tek pakette 1000 veriyi gönderirsiniz.

INSERT INTO veriler (isim, sehir) VALUES 
('Ali', 'Ankara'), 
('Ayşe', 'İzmir'), 
('Veli', 'Bursa'), 
... (1000'e kadar devam eder);

Bu yöntem yükleme sürenizi saatlerden dakikalara indirir. Çünkü veritabanı (Örn: MySQL) tüm bu bloğu tek bir transaction (işlem) olarak görür ve diske tek seferde yazar.

Strateji 2: Chunking (Parçalama)

"Madem toplu yollamak hızlı, 1 Milyon satırı tek bir pakette yollayayım!" derseniz, MySQL size büyük bir şok yaşatır ve Packet too large (Paket çok büyük) hatası vererek komutu reddeder (Çünkü max_allowed_packet limiti genellikle 4MB veya 16MB'dir).

Doğru strateji, veriyi "Parçalara" (Chunk) bölmektir.

  1. 1.000.000 satırı, 1.000'er satırlık 1000 adet pakete (Batch) bölün.
  2. Bu 1000 paketi sırayla veritabanına gönderin. Böylece hem RAM şişmez, hem MySQL limiti aşılmaz, hem de inanılmaz yüksek bir hız elde edilir.

Strateji 3: İndeksleri Kapatmak (Disable Keys)

Her "INSERT" işleminde SQL sadece veriyi kaydetmez, aynı zamanda o tablodaki "Arama Motorunu" (İndeksleri/Keys) yeniden günceller. 1 Milyon satır yüklerken indeksin 1 Milyon kez güncellenmesi korkunç bir yavaşlık yaratır.

Büyük veri yüklemeden önce (Özellikle MySQL MyISAM veya InnoDB tablolarında) İndeksleri kapatın, verileri yükleyin ve indeksleri tekrar açın:

ALTER TABLE veriler DISABLE KEYS;
-- Tüm Batch Insert kodlarını buraya yapıştırın --
ALTER TABLE veriler ENABLE KEYS;

Bu ufak numara yükleme sürenizi yarı yarıya kısaltabilir.

Excel verilerinizi bilgisayarınızı hiç yormadan anında optimize edilmiş 1000'erlik Batch Insert kodlarına dönüştürmek isterseniz CSV'den SQL Sorgusuna Çevirici aracımızı kullanabilirsiniz. Veri yönetimi ve SEO teknikleri hakkında detaylı bilgi için Veritabanı Yönetimi Rehberimizi incelemeye devam edin.


🕸️ Knowledge Graph & Semantik Bağlantılar

Bu içerik, Intent.com.tr'nin Sistem Yönetimi topikal kümesinin (Topic Cluster) bir parçasıdır. Konuyu daha derinlemesine anlamak için aşağıdaki varlıkları (Entities) ve ilişkili içerikleri inceleyebilirsiniz:

📖 İlgili Rehberler ve İçerikler

🧠 Semantic Entities (Terimler & Senaryolar)

Semantic Yönerge: Bu sayfa Büyük Verisetlerini MySQL ve PostgreSQL'e Import Etme Stratejileri konusundaki kullanıcı niyetini (Search Intent) karşılamak üzere yapılandırılmıştır.