kodlama yapiniz nasildir bilemiyorum ama her sorgudan sonra ilgili sorgulari kapayarak ve cacheleyerek sorgulardan kaynaklanan yükü hafifletmis olursunuz bununla birlikte yine kodlama yapinizda cok buyuk onem tasimaktadir ayrica sorgularinizda misal insert,delete,update gibi islemlerde mysql_unbuffered_query(); kullanmak dahada performansli bununla birlikte mysqli ile sorgulama islemlerini de gerceklestirebilirsiniz
mysql ile yapilan sorgulama
PHP Kodu:
<?php
$tq = 1000000;
$mt = microtime(true);
$conn = mysql_connect("127.0.0.1","user","");
mysql_select_db("test", $conn);
for($i=0; $i<$tq; $i++){
$data = mysql_query("SELECT * FROM tabela LIMIT 1", $conn);
$data_object = mysql_fetch_assoc($data);
// mysql_free_result($data);
}
mysql_close($conn);
$et = microtime(true) - $mt;
print "Elapsed time: " . number_format($et) . "s\n";
print "QPS: " . ($tq / $et) . "\n";
?>
mysqli ile yapilan sorgulama
PHP Kodu:
<?php
$tq = 1000000;
$mt = microtime(true);
$conn = mysqli_connect("127.0.0.1","user","","test");
for($i=0; $i<$tq; $i++){
$data = $conn->query("SELECT * FROM tabela LIMIT 1");
$data_obj = $data->fetch_assoc();
}
$conn->close();
$et = microtime(true) - $mt;
print "Elapsed time: " . number_format($et) . "s\n";
print "QPS: " . ($tq / $et) . "\n";
?>
mysql_* 7,227.7 7,222.2 7,220.7 7,223.5
mysqli_* 6,963.0 6,974.0 6,974.4 6,970.5
aradaki farki acikca gorebiliyoruz mysqli 4% kadar daha performansli bir sonuc vermistir
ayrica sql sorgularinizda ihitiyaciniz olan alanlarin isimlerini tanimlayarak cekmek cok daha mantiklidir
Kod:
$sql = "SELECT * FROM tabela";
degilde
Kod:
$sql = "SELECT tabela.adi, tabela.title FROM tabela";
seklinde daha dogrudur ayni sekilde tirnak kullanimlarinida test ederek bakabiliriz..
PHP Kodu:
<?php
define ('MAX',2000000);
function f1()
{
for($i=0;$i<MAX; $i++)
{
$c = "test " . $i;
}
}
function f2()
{
for($i=0;$i<MAX; $i++)
{
$c = "test $i";
}
}
function f3()
{
for($i=0;$i<MAX; $i++)
{
$c = 'test ' . $i;
}
}
$t1 = microtime(true);
f1();
echo 'Time 1: ' , (microtime(true) - $t1) , "<br>\n";
$t2 = microtime(true);
f2();
echo 'Time 2: ' , (microtime(true) - $t2) , "<br>\n";
$t3 = microtime(true);
f3();
echo 'Time 3: ' , (microtime(true) - $t3) , "<br>\n";
?>
Time 1: 2.71823883057
Time 2: 3.30931997299
Time 3: 3.14731502533
yani yazilimin performanss herseye bagli olabilir bunlari dikkate alarak bazi degisiklikler ile birazda olsa performansi artirabilirsiniz sonuc olarak performans alabilmek icin kodlamamizi bastan duzenli bir sekilde kodlanip hazirlanmasi gerekir ayrica sunucu tarafli tum optimizasyonlarin yapilmasi yine ek performanslar getirebilir cluster yontemi sunucu tarafli cacheleme yontemi gibi
Bookmarks