MySQL ile Satırları Hızlıca Toplu Olarak Ekleme

MySQL ile Hızla Satır Ekleyin

MySQL'de toplu veri ekleme dünyasına dalalım. Hayal edin ki, tamamen yeni bir uygulama geliştiren bir yazılım geliştiricisiniz. Büyük bir veri kümesine dayanan harika bir özelliğiniz var. Ancak bunu gerçek dünyaya sunmadan önce, sisteminizin büyük verilerle nasıl başa çıktığını test etmeniz gerekiyor.

İşte burada toplu veri ekleme devreye giriyor. Veritabanınızı hızlı bir şekilde çok fazla bilgi ile doldurmanın turboşarjlı bir yolu gibidir.

Veritabanınızın ve uygulamanızın baskı altında nasıl performans gösterdiğini görmek için binlerce veya hatta milyonlarca kayıt ekleyerek gerçek dünya senaryolarını simüle edebilirsiniz.

Toplu eklemeler, veritabanınızın ve uygulamanızın performansını değerlendirmek için gereklidir; bu, farklı yapılandırmaları karşılaştırmanıza ve hız için optimize etmenize olanak tanır.

Test etmek için toplu eklemeleri kullanabileceğiniz bazı senaryoları inceleyelim:

Bir toplu ekleme kullanarak kullanıcıları, ürünleri, siparişleri veya hatta müşteri yorumlarını veritabanınıza bir kerede ekleyebilirsiniz. Bu, her siparişi ayrı ayrı eklemekten çok daha hızlıdır. Bu, uygulamanızın büyük miktarda veriyi nasıl işlediğini test etmenizi sağlar.

Arama işlevselliğini ve filtrelemeyi test etmek için veritabanınızı büyük sayıda ürünle doldurmanız gerekir.

Bu nedenle, büyük veri hacimlerini işleyen bir sistemle çalışıyorsanız, toplu eklemeler, araç kutunuzda bulundurmanız gereken güçlü bir araçtır.

Bir sonraki bölümde, yazılımınızı test etmek için toplu eklemenin nasıl kullanılabileceğine dair bazı özel örnekleri keşfedeceğiz.

wp_postmeta tablonuz için tek bir INSERT ifadesiyle 10.000 satır veri oluşturmak için:

INSERT INTO wp_postmeta (post_id, meta_key, meta_value)

 SELECT

 nums.n,

 CONCAT('Ten Thousand Key ', CAST(nums.n AS CHAR)),

 CONCAT('Ten Thousand Value ', CAST(nums.n AS CHAR))

 FROM (

 SELECT 

 d1.N + d2.N * 10 + d3.N * 100 + d4.N * 1000 + 1 AS n

 FROM

 (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d1

 ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d2

 ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d3

 ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d4

 ORDER BY n

 ) nums;

Adım adım inceleyelim:

  • Alt Sorgu (nums): Bu alt sorgu, sayı dizisini oluşturmakla sorumludur.

    • Dört aynı alt sorguyu (d1, d2, d3, ve d4 olarak etiketlenmiş) UNION ALL kullanarak birleştirmek için bir SELECT ifadesi kullanır.
    • Her alt sorgu 0'dan 9'a kadar olan sayıları içerir.
    • d1.N + d2.N * 10 + d3.N * 100 + d4.N * 1000 + 1 AS n ifadesi, dört alt sorgudan gelen değerleri birleştirerek 1'den 10.000'e kadar bir sayı dizisi oluşturur.
    • ORDER BY n, sayıların artan sırayla üretilmesini sağlar.
  • Ana Sorgu: Bu, INSERT INTO ifadesidir.

    • Eklenmesi gereken verileri belirtmek için SELECT ifadesini kullanır.
    • post_id: Üretilen sayıları tutan nums.n değişkeni doğrudan post_id olarak kullanılır.
    • meta_key: CONCAT('On Bin Anahtar ', CAST(nums.n AS CHAR)) ifadesi, her satır için benzersiz bir anahtar oluşturur.
    • meta_value: CONCAT('On Bin Değer ', CAST(nums.n AS CHAR)) ifadesi, her satır için benzersiz bir değer oluşturur.
  • Üretilen Veri: Sorgu, wp_postmeta tablosuna 10.000 satır ekleyecektir. Her satırda:

    • post_id: 1 ile 10.000 arasında bir sayı.
    • meta_key: "On Bin Anahtar 1", "On Bin Anahtar 2" gibi benzersiz bir anahtar.
    • meta_value: "On Bin Değer 1", "On Bin Değer 2" gibi benzersiz bir değer.

    Bu MySQL sorgusu on bin satır girişi için kullanılabilir, ancak daha büyük veri girişleri için veri üretim yaklaşımını geliştirmek gereklidir.

    Aşağıdaki MySQL sorgusu, kullanıcı tanımlı değişkenler ve bir dizi CROSS JOIN işlemi kullanarak bir milyon satır veri oluşturmanın akıllıca bir yoludur.

    INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
    
     SELECT
    
     (@rn := @rn + 1) as rn,
    
     CONCAT('One Million Key ', CAST(@rn AS CHAR)),
    
     CONCAT('One Million Value ', CAST(@rn AS CHAR))
    
     FROM
    
     (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d1 CROSS JOIN 
    
     (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d2 CROSS JOIN 
    
     (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d3 CROSS JOIN 
    
     (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d4 CROSS JOIN 
    
     (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d5 CROSS JOIN 
    
     (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d6 CROSS JOIN
    
     (SELECT @rn := 0) params

    Bu genişletilmiş MySQL sorgusunu inceleyelim:

    • Kullanıcı Tanımlı Değişken (@rn):

      • Sorgu, @rn adında bir kullanıcı tanımlı değişken tanıtır. Bu değişken, veri üretirken satır numarasını takip etmek için kullanılır.
      • Başlatma: Değişken, son SELECT ifadesinde 0 olarak başlatılır: (SELECT @rn := 0) params.
    • CROSS JOIN:

      • Sorgu, büyük sayıda satır üretmek için altı CROSS JOIN işlemi kullanır.
      • Her CROSS JOIN, iki tablonun sonuçlarını birleştirir. Bu durumda, 0'dan 9'a kadar olan sayıları içeren altı özdeş alt sorgu (etiketli d1 ile d6) kullanıyoruz.
      • Her CROSS JOIN, satır sayısını 10 ile çarpar. Altı CROSS JOIN işlemi olduğundan, üretilen toplam satır sayısı 10 * 10 * 10 * 10 * 10 * 10 = 1.000.000 olacaktır.
    • SELECT İfadesi:

      • (@rn := @rn + 1) as rn: Bu ifade, her satır için @rn değişkenini 1 artırarak bir satır numarası oluşturur. as rn ifadesi, üretilen satır numarasına rn takma adını verir.
      • CONCAT('One Million Key ', CAST(@rn AS CHAR)): Bu ifade, her satır için benzersiz bir anahtar üretir. "One Million Key " dizesini, mevcut satır numarası (@rn) ile karaktere dönüştürerek birleştirir.
      • CONCAT('One Million Value ', CAST(@rn AS CHAR)): Bu ifade, her satır için benzersiz bir değer üretir. "One Million Value " dizesini, mevcut satır numarası (@rn) ile karaktere dönüştürerek birleştirir.

    Üretilen Veriler:

    • Sorgu, wp_postmeta tablosuna bir milyon satır ekleyecektir. Her satırda şunlar olacaktır:
      • post_id: 1 ile 1.000.000 arasında bir satır numarası.
      • meta_key: "One Million Key 1", "One Million Key 2" gibi benzersiz bir anahtar.
      • meta_value: "One Million Value 1", "One Million Value 2" gibi benzersiz bir değer.

    Ana Noktalar:

    • Kullanıcı Tanımlı Değişkenler, bir sorgu içinde verileri manipüle etmek için güçlü araçlardır.
    • CROSS JOIN, birden fazla tablo veya alt sorguyu birleştirerek büyük sayıda satır üretmenin harika bir yoludur.
    • Bu yöntem, büyük sayıda satır üretmek için iç içe UNION ALL işlemleri kullanmaktan daha verimlidir.

    Bu sorgu, veritabanınız için büyük miktarda test verisi üretmenin akıllı ve verimli bir yaklaşımını göstermektedir.



    Anahtar Kelimeler: Toplu ekleme MySQL,MySQL büyük veri ekleme,Birden fazla satır ekleme MySQL,MySQL toplu ekleme en iyi uygulamaları,Test verisi üretme MySQL,MySQL birçok satırı verimli bir şekilde ekleme,Veri üretimi için MySQL'de CROSS JOIN,MySQL toplu ekleme örnekleri,MySQL'de toplu ekleme,MySQL veri üretim teknikleri
Sonraki YazıÖnceki Yazı
Yorum yok
    Yorum ekle
    comment url