yükleniyor...

21 Mart 2023

MySQL GROUP_CONCAT Max Length Ayarı

GROUP_CONCAT ne işe yarar?

MySQL GROUP_CONCAT fonksiyonu, bir veya daha fazla sütundan verileri gruplayarak bir sütunda birleştirmek için kullanılır. Gruplanacak veriler, bir SELECT sorgusuyla elde edilir ve GROUP BY ifadesiyle belirtilen bir sütuna göre gruplandırılır.

Örnek olarak, bir e-ticaret sitesindeki siparişlerin ürünlerini ve sipariş numaralarını içeren bir tablomuz olduğunu varsayalım. Bu tabloda, her sipariş numarasının birkaç farklı ürünü olabilir. Bu verileri birleştirerek her sipariş numarası için ürünlerin bir liste şeklinde göstermek isteyebiliriz.

+-------------+---------+
| SiparisNo   | Urun    |
+-------------+---------+
| 1           | Fare    |
| 1           | Klavye  |
| 2           | Monitör |
| 2           | Fare    |
| 2           | Kulaklık|
+-------------+---------+

Bu durumda, GROUP_CONCAT fonksiyonunu kullanarak sipariş numarasına göre ürünlerin listesini birleştirebiliriz. Aşağıdaki sorguyu kullanarak sipariş numarasına göre ürünlerin bir listesini alabiliriz:

SELECT SiparisNo, GROUP_CONCAT(Urun SEPARATOR ', ') as Urunler
FROM Siparisler
GROUP BY SiparisNo;

Bu sorgunun sonucu şöyle olacaktır:

+-------------+------------------------+
| SiparisNo   | Urunler                |
+-------------+------------------------+
| 1           | Fare, Klavye           |
| 2           | Monitör, Fare, Kulaklık|
+-------------+------------------------+

Görüldüğü gibi, GROUP_CONCAT fonksiyonu kullanarak sipariş numarasına göre ürünlerin listesini birleştirebiliyoruz. Bu şekilde, birleştirilmiş verileri daha kullanışlı hale getirebiliriz.

GROUP_CONCAT Max Length Değerini Görüntüleme ve Değiştirme

SHOW VARIABLES LIKE 'group_concat_max_len';

GROUP_CONCAT’ın desteklediği varsayılan karakter uzunluğunun 1024 olduğunu görüntülüyoruz.

1024 karakter uzunluğu sizin için uygunsa, endişelenecek bir şey yok. Ancak değilse, GROUP_CONCAT karakter uzunluğunu aşağıdaki gibi gereksiniminize göre değiştirmeniz gerekir:

SET SESSION group_concat_max_len = yeni_deger;

Örneğin, maksimum uzunluğu 2048 karaktere ayarlamak için aşağıdaki sorguyu kullanabilirsiniz:

SET SESSION group_concat_max_len = 2048;

Bu şekilde, GROUP_CONCAT fonksiyonu tarafından birleştirilebilecek maksimum karakter sayısını değiştirebilirsiniz. Bu işlem sadece mevcut oturum için geçerli olacaktır yeni bir bağlantı yapıldığı zaman değer yine ilk haline dönecektir.

GROUP_CONCAT fonksiyonunun maksimum uzunluğunu global olarak ayarlayabilirsiniz. Global ayarlar, MySQL sunucusunda yapılan tüm işlemler için geçerlidir.

Maksimum uzunluğu global olarak ayarlamak için, aşağıdaki sorguyu kullanabilirsiniz:

SET GLOBAL group_concat_max_len = yeni_deger;

Bu sorguda, “yeni_deger” değiştirilecek maksimum uzunluğun yeni değeri olmalıdır. Yalnızca geçerli bir tamsayı kullanılabilir.

Örneğin, maksimum uzunluğu 2048 karaktere global olarak ayarlamak için aşağıdaki sorguyu kullanabilirsiniz:

SET GLOBAL group_concat_max_len = 2048;

Bu şekilde, GROUP_CONCAT fonksiyonu tarafından birleştirilebilecek maksimum karakter sayısını global olarak değiştirebilirsiniz. Ancak, global ayarları değiştirirken dikkatli olun. Yanlış bir değer kullanmak, MySQL sunucusunun performansını olumsuz etkileyebilir veya hatalara neden olabilir.

SET GLOBAL komutu ile yapılan ayarlar yalnızca MySQL sunucusu çalışırken geçerlidir. Sunucu yeniden başlatıldığında, ayarlar varsayılan değerlere döner.

Max Length Değerini Kalıcı Olarak Değiştirmek

GROUP_CONCAT fonksiyonunun maksimum uzunluğunu kalıcı olarak ayarlayabilirsiniz. Bunun için, MySQL ayar dosyası olan “my.cnf” dosyasını düzenlemeniz gerekmektedir. Bu dosya genellikle MySQL sunucunuzun kurulu olduğu dizinde bulunur.

Dosyayı bir metin düzenleyicisi ile açarak aşağıdaki satırı bulun:

#group_concat_max_len = 1024

Bu satırın başındaki “#” işaretini kaldırarak satırı düzenleyin ve istediğiniz maksimum uzunluğu girin. Örneğin, maksimum uzunluğu 2048 karakter olarak ayarlamak için aşağıdaki satırı kullanabilirsiniz:

group_concat_max_len = 2048

Dosyayı kaydedin ve MySQL sunucusunu yeniden başlatın. Artık GROUP_CONCAT fonksiyonunun maksimum uzunluğu, ayar dosyasında belirttiğiniz değer olacaktır.

Not: Ayar dosyasını düzenlerken dikkatli olun. Yanlış bir şey yaparsanız, MySQL sunucusu çalışmayabilir veya yanlış davranabilir. Dosyayı değiştirmeden önce yedeklemek iyi bir fikir olabilir.

SQL, Yazılım içinde yayınlandıEtiketler:
Bir yorum yaz