8 Eylül 2017

Xenforo Tablolarınızı MyISAM yerine InnoDB nasıl yaparız

Xenforo standart biçimde InnoDB yapısını destekler. Hosting yada sunucunuzda InnoDB etkin değilken veritabanı oluşturduğunuz da otomatik olarak tablolarınız MyISAM türünde açılır.

 

En önemli fark :
MyISAM ile InnoDB arasındaki en önemli fark transaction ( Commit ve Rollback ) işlemidir. InnoDB de herhangi bir sorunda verileri geri getirebilirsiniz.

MyISAM nedir :
MySQL’in en eski veritabanı depolama motorudur. Standart depolama motoru olarak kabul görür. Tablolar, fiziksel diskin üç ayrı konumunda tutulur. Tablo başına 64 indeks oluşturulabilir. ForeignKey kullanımını desteklememektedir.

InnoDB nedir :
Güvenlik açısından tercih edilen bir veritabanı motorudur. İlişkisel veritabanını geçişi Foreign Key sayesinde sağlamaktadır. Aynı anda birden fazla kullanıcının UPDATE/DELETE işlemlerini sorunsuz bir şekilde yapılmasını sağlayacak şekilde tasarlanmıştır.

Seçim yaparken :
Transaction gerektirmeyen ve çok fazla okuma (select) yapılan, az sayıda update/insert yapılan bir veri saklamak için MyISAM kullanmalıyız. Diğer durumlarda ise InnoDB uygundur.

 

Eğer tablolarınız MyISAM ve siz InnoDB yapmak istiyorsanız aşağıdaki vereceğim PHP kodunu düzenleyip FTP üzerine atınız ve çalıştırınız.

 

 
<?php
$db = mysql_connect('localhost','username','password');
if(!$db) echo "Veritabanina baglanilamadi - bilgiler hatali";
mysql_select_db('database'); //Veritabani adi
$result=mysql_query('show tables');
$tables_to_ignore = array('xf_import_log','xf_search_index','xf_session','xf_session_admin','xf_attachment_view','xf_session_activity','xf_thread_view');
while($tables = mysql_fetch_array($result)) {
foreach ($tables as $key =&gt; $value) {
if(!in_array($value, $tables_to_ignore)){
mysql_query("ALTER TABLE $value ENGINE=innodb");
}
}
}
echo "Harika! Tablolarınız InnoDB ye güncellendi! Umarım sorunsuz çalışır";
?>

Not: Yedek almak her zaman iyidir 🙂

Share

Bunlar da beğenebilirsiniz...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir