Büyük boyutlu tablolarda zaman kaybetmeden değişiklik yapmak |
||||||
Büyük boyutlarda veri içeren bir veritabanı üzerinde
geliştirme yaptığımızda değişiklik yapmak boyutu sebebiyle uzun zaman alabilir.
Sadece tabloda alan ismi değiştirmek gibi basit bir değişiklik bile günler
sürebilir. Bu soruna içinde milyonlorca satır veri içeren tablolar üzerinde
değişiklik yapmaya kalktığımızda karşılaşırız. Uzun zaman gerektiren işlemler
şunlar olabilir:
Milyon satır veri içeren bir tablo üzerinde alan ismi değişikliği yapmak istediğimizi düşünelim. Adım adım bunu bir örnekle yapalım: Öncelikle mevcut tablomuzun CREATE scriptini alıp bir yere kaydedelim.Tablonun source yani CREATE scriptini oluşturmak için SQL SERVER gibi toolları kullanabiliriz ya da scriptimizi kendimiz de yazabiliriz. Mevcut tablomuzun ismi 'yorumlar' olsun. Yapacağımız değişiklik de `yorumcu_isim` alanını `yorumcu_isim_soyisim` olarak değiştirmek olsun. CREATE TABLE `yorumlar` ( `id` int(11) NOT NULL AUTO_INCREMENT, `yazi_id` int(11) NOT NULL, `yorumcu_isim` varchar(35) NOT NULL, `yorumcu_site` varchar(100) NOT NULL, `yorumcu_yorum` varchar(800) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `date` date NOT NULL, `onay` tinyint(1) NOT NULL, PRIMARY KEY (`id`), KEY `yazi_id` (`yazi_id`) ) ENGINE=MyISAM AUTO_INCREMENT=431 DEFAULT CHARSET=latin1;CREATE script'imizi bir yere kaydettiken sonra tablonun ismini değiştirelim. ALTER TABLE yorumlar RENAME TO yorumlar_dump;Eğer tabloya bağlı bir indexler varsa aynı şekilde index'leri de yeniden isimlendiririz. ALTER INDEX mevcut_index_ismi RENAME TO yeni_index_dump;Mevcut tablomuzun isminin 'yorumlar_dump' yaparak hem tablonun yedeğini almış hem de mevcut tablomuzu silmiş gibi olduk. Artık yapacağımız değişikliğimiz ne olursa olsun anında zaman kaybetmeden yapabiliriz. Bizim yapacağımız değişiklik sadece alan ismi değiştirmek olacak. Kaydettiğimiz CREATE scriptimizi açıp alan değişikliğimizi içerek şekilde değiştirelim: CREATE TABLE `yorumlar` ( `id` int(11) NOT NULL AUTO_INCREMENT, `yazi_id` int(11) NOT NULL, `yorumcu_isim_soyisim` varchar(35) NOT NULL, `yorumcu_site` varchar(100) NOT NULL, `yorumcu_yorum` varchar(800) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `date` date NOT NULL, `onay` tinyint(1) NOT NULL, PRIMARY KEY (`id`), KEY `yazi_id` (`yazi_id`) ) ENGINE=MyISAM AUTO_INCREMENT=431 DEFAULT CHARSET=latin1; Yeni scriptimizi veritabanında çalıştırdığımızda istediğimiz değişikliği zaman kaybetmeden başarmış olduk. Eğer en başında direk olarak tablonun alan ismini değiştirmeye kalksaydık işlem inanılmaz uzun sürecek belki de hiç bir zaman bitmeyecekti. Burada izlediğimiz yolda karşımıza çıkacak tek sıkıntı yeni tablomuzdaki ( 'yorumlar_dump' ) verilerin mevcut tabloya tekrar insert edilmesi olabilir. Son tablomuza dump tablosundan bir insert scriptpi yazarak tablomuza verilerli tekrar ekleyebiliriz. Bu insert scriptini de 10ar ya da 100'er şekilde insert etmesi için select statement'a ek seçenek ekleyebiliriz. Umarım faydalı olmuştur. |
||||||
|
||||||
|
May 2013 (1)
July 2010 (1)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
July 2010 (1)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
Smarty Template Engine ..
Bir Tasarım Şablonu: S ..
XAMPP Server (Apache, ..
Java Mobile 3D Oyun Pr ..
Mysql ile Türkçe Karak ..
Web programlamayla ilg ..
Jquery ve css ile hare ..
Online SMS Gateway ve ..
İş ilanı (Flash ve AS3 ..
PHP Pear MDB2 modülü i ..
Bir Tasarım Şablonu: S ..
XAMPP Server (Apache, ..
Java Mobile 3D Oyun Pr ..
Mysql ile Türkçe Karak ..
Web programlamayla ilg ..
Jquery ve css ile hare ..
Online SMS Gateway ve ..
İş ilanı (Flash ve AS3 ..
PHP Pear MDB2 modülü i ..
Etiketler
| Ajax | Araç | As2 | As3 | Asp.net | C-sharp | C# | E-book | Efekt | Flash | Galeri | Gimp | İş-fırsatı | İş-ilanı | Kitap | Kontrol-etmek | Mysql | Performans | Pixel-renk | Programlama | Smudge | Sunucu-kontrollleri | Update-panel | Veritabanı | Veritabanı-bağlantı | Yağlı-boya | Yaymak |arama
Loading
sosyal




