@yii2ru

Страница 601 из 1721
Karim
22.09.2017
07:54:46
yii migrate/down и число?

Sergey
22.09.2017
07:55:24
как сделать что бы скрипт прогружал всё быстрее?

Karim
22.09.2017
07:55:25
yii migrate/redo all

Sergey
22.09.2017
08:30:46
ребята выручайте, второй день мучаюсь с этой проблемой

Google
Андрей
22.09.2017
08:32:23
Всем привет , что я делаю не так : ...->orWhere("regexp", "lower(names)", '^{$names}') Хочу получить с начала слова совпадение

first
22.09.2017
08:32:25
жадная загрузка?

не?

Sergey
22.09.2017
08:34:17
сек сейчас покажу

Dmitry
22.09.2017
08:36:01
сек сейчас покажу
а вообще да, нужна жадная загрузка, типа ` $query = Devices::find() ->select('*') ->with('base') ->all(); `

Sergey
22.09.2017
08:37:06
даже так вылетает всеровно Out of memory (allocated 408944640) (tried to allocate 4096 bytes)

и грузит минут 10

Dmitry
22.09.2017
08:38:08
Sergey
22.09.2017
08:38:23
да

Dmitry
22.09.2017
08:39:03
да
самом собой, у тебя же все данные из двух таблиц выбираются и даже больше

ограничь как то

Sergey
22.09.2017
08:39:45
как ограничить?

на пример?

Google
Dmitry
22.09.2017
08:40:07
на пример?
тебе все данные сразу из таблицы нужны?

Sergey
22.09.2017
08:41:23
нужно выбрать информацию по утройствам (таблица devices) из таблицы base именно в этой таблице очень много разных записей

надо найти все записи к каждому устройтву

там именно для этих устройств записей не много

Dmitry
22.09.2017
08:42:03
т.е. тебе надо все все устройства вывести на одной странице?

Sergey
22.09.2017
08:42:38
не устройства а информацию к ним

Dmitry
22.09.2017
08:43:20
ну ты понимаешь что тебе в таком случае придется выбирать все данные из 2й таблицы как минимум 1 раз, т.е. все 600мб

Maxim
22.09.2017
08:43:31
Sergey у меня было переполнение памяти, когда я в запросе цикл устроил) покажи запрос в ActiveRecord или чем он у тебя Также попробуй сделать inner join вместо left join Посмотри и покажи explain запроса

Sergey покажешь?

Sergey
22.09.2017
08:46:48
сек

хммм... в дебаггере есть только этот запрос SELECT * FROM devices

есть у кого то идеи?

SiZE
22.09.2017
09:12:52
нет, магический шар пока на зарядке

Sergey
22.09.2017
09:14:25
просто убрал all

object(yii\db\ActiveQuery)#155 (28) { ["sql"]=> NULL ["on"]=> NULL ["joinWith"]=> NULL ["select"]=> array(1) { [0]=> string(1) "*" } ["selectOption"]=> NULL ["distinct"]=> NULL ["from"]=> NULL ["groupBy"]=> NULL ["join"]=> NULL ["having"]=> NULL ["union"]=> NULL ["params"]=> array(0) { } ["_events":"yii\base\Component":private]=> array(0) { } ["_behaviors":"yii\base\Component":private]=> array(0) { } ["where"]=> NULL ["limit"]=> NULL ["offset"]=> NULL ["orderBy"]=> NULL ["indexBy"]=> NULL ["emulateExecution"]=> bool(false) ["modelClass"]=> string(21) "humhub\models\Devices" ["with"]=> array(1) { [0]=> string(4) "base" } ["asArray"]=> NULL ["multiple"]=> NULL ["primaryModel"]=> NULL ["link"]=> NULL ["via"]=> NULL ["inverseOf"]=> NULL }

вот запрос

SELECT * FROM base WHERE imei IN ('862631033017491', '862631033023192', '866104029348128', '863586035008691', '866104020526516', '862631033013417', '866104029355644', '862631033022384', '861694039643182', '866104024714621', '456456456457')

SiZE
22.09.2017
09:20:53
$query = Devices::find() ->select('*') ->innerJoinWith('base', false) ->asArray() ->all(); А так?

Sergey
22.09.2017
09:22:56
nfr ;t uhepbn ljkuj

так же грузит долго

Google
Sergey
22.09.2017
09:25:42
даже если выставляю limit(2) все ровно грузит минут 5

Konstantin
22.09.2017
09:26:51
select грузит долго?

Sergey
22.09.2017
09:27:27
да

Konstantin
22.09.2017
09:28:07
да
http://shot.hsdn.org/QLAGzOV3

видишь там время есть, у тебя там прям время в минутах где селект запрос ?

ты дебагер пользуешь?

Sergey
22.09.2017
09:31:23
http://prntscr.com/go9i4x

Konstantin
22.09.2017
09:33:22
ты не то открыл

http://shot.hsdn.org/BZjKW7EO

либо датабазе

Логс немного другое делает

Sergey
22.09.2017
09:35:51
http://prntscr.com/go9ju8

Sergey
22.09.2017
09:36:28
это 2 только записи

Karim
22.09.2017
09:37:50
А база локальная хоть?

Konstantin
22.09.2017
09:38:01
нихуясе

Sergey
22.09.2017
09:38:28
да локалка

Konstantin
22.09.2017
09:38:36
это 2 только записи
попробуй не джоинами а двумя селектами

там чо миллионы строк без индекса ?

база умирает как будто ))) ты бы ее перезапустил на всякий случай

Sergey
22.09.2017
09:41:18
могу показать пример базы

Google
Sergey
22.09.2017
09:41:20
сек

SiZE
22.09.2017
09:41:41
план запроса покажи

Sergey
22.09.2017
09:41:52
вот таблица

CREATE TABLE base ( id int(11) NOT NULL AUTO_INCREMENT, date datetime DEFAULT NULL, imei varchar(100) DEFAULT NULL, gsmSignal varchar(20) DEFAULT NULL, fvVer varchar(50) DEFAULT NULL, numBills varchar(100) DEFAULT NULL, billAcceptorState varchar(50) DEFAULT NULL, id_hard varchar(200) DEFAULT NULL, type varchar(50) DEFAULT NULL, collection varchar(2) DEFAULT NULL, ZigBeeSig varchar(10) DEFAULT NULL, billCash varchar(100) DEFAULT NULL, tariff varchar(100) DEFAULT NULL, event varchar(20) DEFAULT NULL, edate datetime DEFAULT NULL, billModem varchar(50) DEFAULT NULL, sumBills varchar(50) DEFAULT NULL, ost varchar(50) DEFAULT NULL, numDev varchar(50) DEFAULT NULL, devSignal varchar(50) DEFAULT NULL, statusDev varchar(50) DEFAULT NULL, colGel varchar(50) DEFAULT NULL, colCart varchar(50) DEFAULT NULL, price varchar(50) DEFAULT NULL, timeout varchar(50) DEFAULT NULL, doorpos varchar(50) DEFAULT NULL, doorled varchar(50) DEFAULT NULL, kpVer varchar(100) DEFAULT NULL, srVer varchar(100) DEFAULT NULL, mTel varchar(100) DEFAULT NULL, sTel varchar(100) DEFAULT NULL, ksum varchar(100) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=3028914 DEFAULT CHARSET=utf8;

в каком смысле план запроса?

Павел
22.09.2017
09:43:38
Из профайлера

Sergey
22.09.2017
09:44:43
http://prntscr.com/go9nga

Admin
ERROR: S client not available

Maxim
22.09.2017
09:48:11
Sergey посмотри explain первого запроса через БД

напиши комманду EXPLAIN SELECT * ...

Konstantin
22.09.2017
09:49:18
http://prntscr.com/go9nga
у меня всегда какая то схема еще в запросах а у тебя нет такого

Maxim
22.09.2017
09:49:20
у тебя индексы стоят на поля id_dev и imai?? Какого они типа

Konstantin
22.09.2017
09:49:46
http://shot.hsdn.org/y1dnzbY8

типа такая херня всегда )) не понимаю чо это

Maxim
22.09.2017
09:50:21
Sergey Почему у тебя такого нет? http://joxi.ru/zANMaL8flyD8V2

Konstantin
22.09.2017
09:50:55
Sergey Почему у тебя такого нет? http://joxi.ru/zANMaL8flyD8V2
она во вкладке другой - датабазе

Sergey
22.09.2017
09:51:08
http://prntscr.com/go9pz7

Maxim
22.09.2017
09:51:38
Твой датасет 30 000 000!!!

конечно долго обратабывает

Sergey
22.09.2017
09:52:11
что можно сделать?

Google
Maxim
22.09.2017
09:52:33
у тебя плохая связь

Sergey http://www.mysql.ru/docs/man/Estimating_performance.html

Konstantin
22.09.2017
09:53:56
конечно долго обратабывает
там разьве не показано что нет индекса ?

подзабыл я этот эксплаин

Maxim
22.09.2017
09:54:57
я спрашивал про индек, подумал он сделает))) Установи вообще внешний ключ!!!

Konstantin
22.09.2017
09:55:46
http://prntscr.com/go9pz7
у меня вот так выглядит http://shot.hsdn.org/tPkYslAq

Maxim
22.09.2017
09:55:50
Sergey сделай для начала индексы по этим двум полям. должно стать в 100 раз быстрей

Sergey http://www.mysql.ru/docs/man/LIMIT_optimisation.html

Sergey почитай про limit

Укажи DISTINCT!!!

Sergey
22.09.2017
09:57:07
я только что уточнил как оно должно работать, суть такова вытащить с таблицы devices все записи потом по imei вывести последнюю запись по времени для автомата

Павел
22.09.2017
09:57:37
А сразу последнюю что бы не вытащить?

Maxim
22.09.2017
09:57:44
а зачем девайсы не понимаю

Konstantin
22.09.2017
09:58:19
девайсы разные

Sergey
22.09.2017
09:58:21
девай это автомат, а последняя запись в таблице base это состояние автомата

Павел
22.09.2017
09:58:30
Я ваще не понимаю зачем всю таблицу перебирать если нужна одна запись

Sergey
22.09.2017
09:58:40
там 10 девайсов сейчас

надо к каждому получить последнюю запись

Павел
22.09.2017
09:59:03
Ну и?

Страница 601 из 1721