11-06-2024 17:58
01-12-2022 10:34
17-03-2023 11:21
28-03-2024 17:01
Büyük veritabanı işlemlerinde, milyonlarca kaydın içe aktarılması veya toplu güncellemeler sırasında foreign key (yabancı anahtar) denetimleri ciddi miktarda işlem yükü oluşturabilir. Bu nedenle sistem yöneticileri ve geliştiriciler bazen foreign key kontrollerini geçici olarak devre dışı bırakarak veri aktarım hızını artırmayı tercih ederler.
Ancak bu işlem yalnızca performans açısından değerlendirilmemeli, veri bütünlüğü üzerindeki etkileri de dikkate alınmalıdır. Özellikle global seviyede yapılan değişiklikler tüm veritabanı bağlantılarını etkileyebileceğinden dikkatli kullanılmalıdır.
Foreign Key, bir tablodaki verinin başka bir tablodaki kayıtlarla ilişkili olmasını sağlayan veritabanı kısıtlamasıdır.
Örneğin: Markalar
Modeller
Bu yapıda marka_id alanı foreign key olarak tanımlanabilir. Böylece sistem mevcut olmayan bir markaya model eklenmesini engeller.
marka_id
Oturum Bazında (Session) Foreign Key Kontrolünü Kapatma
Sadece mevcut bağlantıyı etkiler.
SET FOREIGN_KEY_CHECKS = 0;
Tekrar açmak için:
SET FOREIGN_KEY_CHECKS = 1;
Özellikleri
Sunucuya yeni bağlanan tüm istemciler için geçerli olur.
SET GLOBAL FOREIGN_KEY_CHECKS = 0;
Yeniden etkinleştirmek için:
SET GLOBAL FOREIGN_KEY_CHECKS = 1;
MySQL veya MariaDB yeniden başlatıldığında ayarın korunması isteniyorsa yapılandırma dosyasına eklenebilir.
Linux
[mysqld] foreign_key_checks=0
Windows
Ardından servis yeniden başlatılır.
Üretim ortamlarında kalıcı olarak kapatılması önerilmez.
Toplu Veri Aktarımı
Milyonlarca satırlık verinin aktarımında performansı artırır.
Backup Geri Yükleme
Yedek dosyalarının tablo sırasından bağımsız yüklenmesini kolaylaştırır.
Veri Migrasyonu
Sunucular arası taşıma işlemlerini hızlandırır.
ETL Süreçleri
Veri ambarı projelerinde yükleme sürelerini azaltabilir.
Test Ortamları
Geliştirme süreçlerinde esneklik sağlar.
Gerçek kazanç tablo yapısına bağlıdır.
Oturum bazında:
SELECT @@FOREIGN_KEY_CHECKS;
Global değer:
SELECT @@GLOBAL.FOREIGN_KEY_CHECKS;
Oturum değeri:
SELECT @@SESSION.FOREIGN_KEY_CHECKS;
SHOW VARIABLES LIKE 'foreign_key_checks';
$pdo->exec("SET FOREIGN_KEY_CHECKS=0"); // Toplu işlemler $pdo->exec("SET FOREIGN_KEY_CHECKS=1");
Foreign key kontrollerinin kapatılması doğrudan Google sıralamalarını etkilemez. Ancak ilişkisel verilerin bozulması durumunda:
Bu nedenle özellikle büyük otomotiv portalları, e-ticaret siteleri ve içerik yönetim sistemlerinde foreign key kontrolleri yalnızca kısa süreli bakım işlemleri sırasında devre dışı bırakılmalıdır.
SET FOREIGN_KEY_CHECKS=0 komutu yalnızca mevcut bağlantıyı etkilerken, SET GLOBAL FOREIGN_KEY_CHECKS=0 komutu sunucu genelinde yeni bağlantılar için geçerli olur. Toplu veri aktarımı, backup geri yükleme ve migrasyon işlemlerinde önemli performans avantajları sağlayabilir. Ancak veri bütünlüğünü koruyan mekanizmayı devre dışı bıraktığı için işlem tamamlandıktan sonra mutlaka tekrar etkinleştirilmeli ve veriler doğrulanmalıdır.
SET FOREIGN_KEY_CHECKS=0
SET GLOBAL FOREIGN_KEY_CHECKS=0
foreign key checks, foreign key kapatma, mysql foreign key checks, mariaDB foreign key checks, set global foreign_key_checks, foreign key constraint fails, mysql performans artırma, mysql optimizasyon, veritabanı hızlandırma, php foreign key checks, mysql backup restore, mysql import hızlandırma, mysql veri aktarımı, global foreign key checks, session foreign key checks, mysql veri bütünlüğü, database optimization, foreign key kontrolü kapatma, mysql tuning, mariadb foreign key yönetimi
Kendi özelleştirilmiş stilini belirle
Uygulamanız için mükemmel renk modunu seçin.
Dil yönünüzü değiştirin
Tam ekran modu aç/kapat
Web sitesi için uygun bir menü sistemi seçin