Merhaba,

Veritabanı boyutunu ve motorlarını (MyISAM veya InnoDB) yazar mısınız? Öncelikle, InnoDB kullanıyorsanız ALTER TABLE 'TABLO' DISABLE KEYS ve ALTER TABLE 'TABLO' ENABLE KEYS çalışmaz çünkü MyISAM moturu için işlem yaparlar (ref: ALTER TABLE Statement ).

MyISAM kullanıyorsanız ilgili tabloları kilitleyerek read/write yani okuma/yazma yapmasını engellemiş oluyorsunuz. Örneğin, içe aktarım yapıyorsanız indekslerin güncellenmesini kapatmalısınız. Kapatırsanız MySQL aktarım yaparken sadece tek bir disk yazımı yapar ama kapatmazsanız her bir sütun için birden fazla yazar.

Diyelim ki veritabanı ve kullanıcı açtınız. İçe aktarma (Import, SSH vb.) yapmadan önce aşağıdaki komutu çalıştırın:

ALTER TABLE `TABLOİSMİ` DISABLE KEYS;
Şimdi aktarmayı başlatın. Aktarma bitince anahtarları tekrar aktif edin:

ALTER TABLE `TABLOİSMİ` ENABLE KEYS;
Evet şimdi aktardığınız veritabanı sunucuyu zorlamayacaktır. Daha doğrusu çok büyükse (örneğin, 1 milyon tablolu bir veritabanı gibi) aktarırken daha hızlı aktaracak ve sizin kontrolünüz dışında disk yazması yapmayacak.

Peki ya InnoDB kullanıyorsanız ne olacak? Aşağıdaki işlemleri sırasıyla yapacağız.

Aktarım öncesi tablo için:
SET FOREIGN_KEY_CHECKS = 0;
SET UNIQUE_CHECKS = 0;
SET AUTOCOMMIT = 0;
Aktarım bittikten sonra:
SET UNIQUE_CHECKS = 1;
SET FOREIGN_KEY_CHECKS = 1;
COMMIT;
Buraya kadar anlattıklarım halihazırda yapılması veya yapılırsa makul olan işlemlerdi ama yine de endişe etmenize gerek yok. Aşağıdaki komutu çalıştırırsanız sorunun çözülmesi gerekecek çünkü tüm indeksleri optimize edecek.

1- YEDEK ALIN

2- Çalıştırın:

mysqlcheck -u root -p --auto-repair --optimize --all-databases
Not: MySQL Root şifresi girmeniz gerekecek.

Uyarı: Bu işlem esnasında sunucu zorlanabileceği için, yoğun olmayan daha doğrusu sitenizin ziyaretçisi pek olmadığı saatlerde yapmanızı öneririm.

Son olarak, veritabanınız çok büyük değilse zaten endişe etmeyin. Ayrıca, bu işlemlerin riskli olduğunu, fazla kurcalamamanız gerektiğini ama buna rağmen işlem gerekiyorsa mutlaka YEDEK ALMANIZI öneririm. Kolay gelsin.