コード例 #1
0
$result = bmark_query($sql, $dbh);
# print $sql . "\n";
$sql = 'create index login_index on users_no_partition (login)';
$result = bmark_query($sql, $dbh);
# print $sql . "\n";
for ($i = 0; $i < $max_rows; $i++) {
    $sql = "insert into users_no_partition (login, pass) values (\"" . md5(rand(1, 5000) . microtime()) . "user{$i}\", \"" . md5("pass{$i}") . "\")";
    $result = bmark_query($sql, $dbh);
    # print $sql . "\n";
}
$timer->setMarker('No_Partition');
echo "Elapsed time between Start and Test_Code_Partition: " . $timer->timeElapsed('Start', 'No_Partition') . "\n";
$prefix = "users_";
$k = 1;
for ($i = 0; $i < $parts; $i++) {
    $table = $prefix . padNumber($i, 2);
    $sql = "drop table if exists {$table}";
    # print "table: $table\n";
    # print $sql . "\n";
    $result = bmark_query($sql, $dbh);
    $sql = "CREATE TABLE {$table} ( id INT NOT NULL primary key AUTO_INCREMENT , login varchar(255), email varchar(255), im varchar(255), twitter varchar(255), pass varchar(255), datejoined datetime)  ENGINE=InnoDB DEFAULT CHARSET=utf8";
    $result = bmark_query($sql, $dbh);
    $sql = "create index login_index on {$table} (login)";
    $result = bmark_query($sql, $dbh);
    for ($j = 0; $j < $perpart; $j++) {
        $sql = "insert into {$table} (id, login, pass) values ({$k}, \"" . md5(rand(1, 5000) . microtime()) . "user{$j}\", \"" . md5('pass$j') . "\")";
        $result = bmark_query($sql, $dbh);
        $k++;
    }
}
// create & update the meta table used for the php partition
コード例 #2
0
ファイル: Dao.php プロジェクト: barce/partition_benchmarks
 function find($table_type, $field, $value, $like = '', $partition_flag = '')
 {
     // drizzle
     if (strcmp($this->database_type, 'drizzle') == 0) {
         if (strcmp($like, 'like') == 0) {
             $like = 'like';
             $value = "'%{$value}'";
         } else {
             $like = '=';
         }
         if (strcmp($partition_flag, 'nopart') == 0) {
             $sql = "select * from {$table_type}" . "_no_partition where {$field} {$like} '{$value}'";
             $result = @drizzle_query($this->connection, $sql);
             if (!$result) {
                 die('Invalid query: ' . drizzle_con_error($this->connection));
             }
             drizzle_result_buffer($result) or die('ERROR: ' . drizzle_con_error($dbh) . "\n");
             while ($row = drizzle_row_next($result)) {
                 $myarray[] = $row;
             }
             return $myarray;
         }
         if (strcmp($partition_flag, 'drizzle') == 0) {
             $sql = "select * from {$table_type} where {$field} {$like} '{$value}'";
             print "partition sql: {$sql}\n";
             $result = @drizzle_query($this->connection, $sql);
             if (!$result) {
                 die('Invalid query: ' . drizzle_con_error($this->connection));
             }
             drizzle_result_buffer($result) or die('ERROR: ' . drizzle_con_error($dbh) . "\n");
             while ($row = drizzle_row_next($result)) {
                 $myarray[] = $row;
             }
             return $myarray;
         }
         // iterate through the tables using the meta_table
         $sql = "select * from meta_table where tablename like \"" . $table_type . "%\"";
         print $sql . "\n";
         try {
             $result = @drizzle_query($this->connection, $sql);
             if (!$result) {
                 throw new Exception('meta_table query failed');
             }
         } catch (Exception $e) {
             echo drizzle_con_error($this->connection) . "\n";
             echo "Caught active server error exception:\n", $e->getMessage(), " ", $e->getFile(), ": Line ", $e->getLine(), "\n", $e->getTraceAsString(), "\n";
         }
         drizzle_result_buffer($result) or die('ERROR: ' . drizzle_con_error($dbh) . "\n");
         while ($row = drizzle_row_next($result)) {
             print_r($row);
             $current_table = $row[1];
             $iterator = $row[2];
             $last_user_id = $row[3];
         }
         print "current_table: {$current_table}\n";
         // awesome, we got meta data
         // we need to now:
         // go through each table
         // find the info
         // return the info
         // get current_table number
         preg_match('/_[0-9]+/', $current_table, $matches);
         $bar_number = $matches[0];
         preg_match('/[0-9]+/', $bar_number, $matches);
         $table_number = $matches[0];
         // get how long the number is b/c of padding issues later
         $num_length = strlen($table_number);
         $i_table_number = (int) $table_number;
         // for ($i = 0; $i <= $i_table_number; $i++) {
         $i = 0;
         $i_sent = 0;
         $myarray = array();
         while ($i_sent <= 0) {
             // search each partition
             $curr_table = $table_type . "_" . padNumber($i, $num_length);
             $sql = "select * from {$curr_table} where {$field} {$like} '{$value}'";
             print $sql . "\n";
             $result = @drizzle_query($this->connection, $sql);
             if (!$result) {
                 die('Invalid query: ' . drizzle_con_error($this->connection));
             }
             drizzle_result_buffer($result) or die('ERROR: ' . drizzle_con_error($dbh) . "\n");
             while ($row = drizzle_row_next($result)) {
                 $myarray[] = $row;
             }
             print "count (myarray) : " . count($myarray) . "\n";
             if (count($myarray) >= 1) {
                 print "count > 1\n";
                 $i_sent = 1;
             }
             if ($i >= $i_table_number) {
                 print "{$i} <= {$i_table_number}\n";
                 $i_sent = 1;
             }
             $i++;
         }
         /*
         			$sql = "select * from $table where $field $like $value";
         			$result = mysql_query($sql, $this->connection);
         			if (!$result) {
         				die('Invalid query: ' . mysql_error());
         			}
         			while($row = mysql_fetch_assoc($result))
         			{
         			  $array[] = $row; 
         			}
         */
         print_r($myarray);
         return $myarray;
     }
     // end of drizzle portion
     // mysql
     if (strcmp($this->database_type, 'mysql') == 0) {
         if (strcmp($like, 'like') == 0) {
             $like = 'like';
             $value = "'%{$value}'";
         } else {
             $like = '=';
         }
         if (strcmp($partition_flag, 'nopart') == 0) {
             $sql = "select SQL_CACHE * from {$table_type}" . "_no_partition where {$field} {$like} '{$value}'";
             $result = mysql_query($sql, $this->connection);
             if (!$result) {
                 die('Invalid query: ' . mysql_error());
             }
             while ($row = mysql_fetch_assoc($result)) {
                 $myarray[] = $row;
             }
             return $myarray;
         }
         if (strcmp($partition_flag, 'mysql') == 0) {
             $sql = "select SQL_CACHE * from {$table_type} where {$field} {$like} '{$value}'";
             print "partition sql: {$sql}\n";
             $result = mysql_query($sql, $this->connection);
             if (!$result) {
                 die('Invalid query: ' . mysql_error());
             }
             while ($row = mysql_fetch_assoc($result)) {
                 $myarray[] = $row;
             }
             return $myarray;
         }
         // iterate through the tables using the meta_table
         $sql = "select SQL_CACHE * from meta_table where tablename like \"" . $table_type . "%\"";
         print $sql . "\n";
         $result = mysql_query($sql, $this->connection);
         if (!$result) {
             die('Cannnot access meta table: ' . mysql_error());
         }
         while ($row = mysql_fetch_assoc($result)) {
             $current_table = $row['tablename'];
             $iterator = $row['iterator'];
             $last_user_id = $row['last_user_id'];
         }
         print "current_table: {$current_table}\n";
         // awesome, we got meta data
         // we need to now:
         // go through each table
         // find the info
         // return the info
         // get current_table number
         preg_match('/_[0-9]+/', $current_table, $matches);
         $bar_number = $matches[0];
         preg_match('/[0-9]+/', $bar_number, $matches);
         $table_number = $matches[0];
         // get how long the number is b/c of padding issues later
         $num_length = strlen($table_number);
         $i_table_number = (int) $table_number;
         // for ($i = 0; $i <= $i_table_number; $i++) {
         $i = 0;
         $i_sent = 0;
         $myarray = array();
         while ($i_sent <= 0) {
             // search each partition
             $curr_table = $table_type . "_" . padNumber($i, $num_length);
             $sql = "select SQL_CACHE * from {$curr_table} where {$field} {$like} '{$value}'";
             print $sql . "\n";
             $result = mysql_query($sql, $this->connection);
             if (!$result) {
                 die('Invalid query: ' . mysql_error());
             }
             while ($row = mysql_fetch_assoc($result)) {
                 $myarray[] = $row;
             }
             print "count (myarray) : " . count($myarray) . "\n";
             if (count($myarray) >= 1) {
                 print "count > 1\n";
                 $i_sent = 1;
             }
             if ($i >= $i_table_number) {
                 print "{$i} <= {$i_table_number}\n";
                 $i_sent = 1;
             }
             $i++;
         }
         /*
         			$sql = "select * from $table where $field $like $value";
         			$result = mysql_query($sql, $this->connection);
         			if (!$result) {
         				die('Invalid query: ' . mysql_error());
         			}
         			while($row = mysql_fetch_assoc($result))
         			{
         			  $array[] = $row; 
         			}
         */
         print_r($myarray);
         return $myarray;
     }
     // end of mysql portion
 }