Помогите разобраться с производительность приложения

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
sergvic
Сообщения: 81
Зарегистрирован: 2014.01.24, 17:25

Помогите разобраться с производительность приложения

Сообщение sergvic »

Есть БД на postgres
Есть класс

Код: Выделить всё

class OppCallBacks extends \yii\db\ActiveRecord
{
    public function behaviors()
    {
        return [
            [
                'class' => TimestampBehavior::className(),
                'createdAtAttribute' => 'created_at',
                'updatedAtAttribute' => 'updated_at',
                'value' => new Expression('NOW()'),
            ],
        ];
    }

    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'opp_callbacks';
    }

    public static function getDb()
    {
        return Yii::$app->get('dbspkhpg02');
    }
}
Есть контроллер

Код: Выделить всё

namespace app\commands;

use yii\helpers\ArrayHelper;
use app\modules\Pers\models\OppCallBacks;
use app\modules\Pers\models\OppPhones;
use app\modules\Pers\models\OppExtPhones;
use app\modules\Pers\models\OppGroups;
use app\modules\Pers\models\OppPhoneToGroup;
use app\modules\Pers\models\PersCdrPgSearch;

class OppController extends \yii\console\Controller
{
    public function actionAllocatemisscalls()
    {
        $res = OppCallBacks::find()->select('id_call')->orderBy('id_call DESC')->one();
        return;
     }
}
Запускаю
time ./yii opp/allocatemisscalls
real 0m16.047s
user 0m0.842s
sys 0m0.486s
Приложение с одним запросов к БД выполняется 16 сек. Делаю этот же запрос из клиента postgres выполняется моментально
Что не так ? Почему так тормозит ?
Centos 7 , PHP 7.0.27
Аватара пользователя
SiZE
Сообщения: 2813
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Помогите разобраться с производительность приложения

Сообщение SiZE »

sergvic писал(а): 2018.02.16, 11:39 Что не так ? Почему так тормозит ?
one() выбирает первую запись из всего запроса, а не ограничивает запрос к БД. Без limit не будет тормозить только если у вас в условии выборка по уникальному ключу.
Ответить