Я только что перенесла свой код с mysql_*
до PDO
и удивился, увидев огромный удар производительности. Я читал http://wooptoo.com/blog/pdo-vs-mysqli-performance-comparison/ и думал, что PDO
будет более эффективным.производительность с PDO по сравнению с mysql
Но я думаю, что я могу сделать что-то неправильно, что делает мой код намного медленнее, чем ожидалось.
я создал класс singleton
class db
{
static $dbinstance=null;
public static function getinstance()
{
if (!self::$dbinstance)
{
try
{
self::$dbinstance=new PDO("mysql:host=127.0.0.1;dbname=inventory",'user','pass');
self::$dbinstance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
die('<b>Errors:</b> '.$e->getMessage());
}
}
return self::$dbinstance;
}
Ниже код, я использую для вставки (я истребил код короткий для простоты)
if(isset($_POST['Build']))
{
$InCart=db::getinstance()->prepare("SELECT `Vendor`, `ItemType`, `ItemCode`, `ItemDesc`, `SerialNo`, `Asset_Code`, `ItmUnit`, `Qty`,`SiteId`, `id`, `Ownership`, `wh`, `Phase`, `Category`, `Issue_Vendor`, `AssetName`, `po`, `FaultInfo`, `willreturn`, `Person`, `remarks`, `grnno`,stockid FROM temptable WHERE id=?");
$insertinSIR=db::getinstance()->prepare("INSERT INTO Sir(SirNo,SiteId,Vendor,Type,ItemDesc,ItemCode,SerialNo,Unit,AssetCode,Qty,Region,Phase,Category,Issue_vendor,AssetName,ownership,Dated,PersonName,Remarks,po,invuser,grnno,WarehouseType,WarehouseLocation) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,NOW(),?,?,?,?,?,?,?)");
foreach ($_POST['id'] as $id)
{
$InCart->execute(array($id));
$arr=$InCart->fetch(PDO::FETCH_NUM);
$insertinSIR->execute(array($a,$arr[8],$arr[0],$arr[1],$arr[3],$arr[2],$arr[4],$arr[6],$arr[5],$arr[7],$user,$arr[12],$arr[13],$vendor,$arr[15],$arr[10],$person,$remarks,$arr[16],$invuser,$arr[21],$whtype,$whlocation));
}
Я бы признателен, если кто-то указать на производительность нападающего?
EDIT
Является ли это правильный путь, я готовлюсь заявления и выполнения в цикле?
Определите, пожалуйста, «производительность» и «намного медленнее» в определенных количествах и запросах. Какой конкретный запрос работает «намного медленнее» и сколько времени он занимает? –
У меня есть перенос всего моего кода на PDO, и он занимает 6X больше времени для завершения всего скрипта с теми же проверками, которые я делал с mysql_ * –