[Linux-programlama] Re: mysql 40 milyon kayitlik tablonun field tipini degistirmek

---------

[Linux-programlama] Re: mysql 40 milyon kayitlik tablonun field tipini degistirmek

From: Atıf CEYLAN <atifceylan_at_gmail.com>
Date: Fri, 04 Apr 2008 18:06:17 +0300
Message-ID: <47F643E9.6000107@gmail.com>

ismail aşcının da bahsettiği gibi buffer size, sort buffer size bunları
bi oyna ama cok değişmez.
eğer güçlü bir makinen varsa ve tablo tipin innodb ise (satır bazlı
kilitleme yapabildiği için dedim myisam da da denenebilir) şöle bir
yöntem izleyebilirsin.
öncelikle yeni tablonu creat et. ve daha sonra senin için yazdığım
aşağıdaki php betiğini kendine göre düzenle ve çalıştır bakalım ne
olacak :)

Not : betik birden fazla süreç açarak aynı anda birden fazla veri
yazmaya calışır. umarım işe yarar.

<?php
    
    $db = mysql_connect('localhost', 'kullaniciadim', 'veritabanisifrem');
    
    function aktar($db, $carpim, $carpilacak)
    {
    
        $lm=$carpim*$carpilacak;
            
        $query = mysql_query("select alan1,alan2 from table1 where limit
$lm,$carpilacak",$db);
    
        while($row = mysql_fetch_array($query))
        {
             mysql_query("insert into table2 (alan1,alan2)
values('$row[alan1]','$row[alan2]')",$db);
        }
    }
        
    $query = mysql_query("select count(alan1) from table1");
       
       if ($num = mysql_fetch_array($query))
       {
     
        $ToplamProccess = 10;
        $SuankiProccess = 0;
    
        $carpilacak=($num[0]) / (10);
        
        $carpilacak=ceil($carpilacak);
        
        while ( $SuankiProccess <= $ToplamProccess )
        {
        
            $prgid = pcntl_fork();
                
            if ( $prgid == 0) {
            
            $SuankiProccess++;
            
            }else{
                            
                aktar($db, $SuankiProccess,$carpilacak);
                
                exit();
            
            }
        }
         
         }
         
         mysql_close($db);
          
?>
_______________________________________________
Linux-programlama mailing list
Linux-programlama_at_liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama
Received on Fri 04 Apr 2008 - 17:18:55 EEST

---------

Bu arsiv hypermail 2.2.0 tarafindan uretilmistir.