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

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
, ved4
olarak etiketlenmiş)UNION ALL
kullanarak birleştirmek için birSELECT
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.
- Dört aynı alt sorguyu (
Ana Sorgu: Bu,
INSERT INTO
ifadesidir.- Eklenmesi gereken verileri belirtmek için
SELECT
ifadesini kullanır. post_id
: Üretilen sayıları tutannums.n
değişkeni doğrudanpost_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.
- Eklenmesi gereken verileri belirtmek için
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.
Üretilen Veri: Sorgu, wp_postmeta
tablosuna 10.000 satır ekleyecektir. Her satırda:
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
.
- Sorgu,
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 (etiketlid1
iled6
) 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.
- Sorgu, büyük sayıda satır üretmek için altı
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ınarn
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