• Вопросы по теории mysql?

    @Hfnas Автор вопроса
    Большое спасибо Вам за ценный совет!!!!
  • Вопросы по теории symfony?

    @Hfnas Автор вопроса
    2. То что редактируем или добавляем, через доктрину.
    https://github.com/ElisDN/demo-project-manager/blo...

    Это нужно для того, чтобы твиг не запрашивал дополнительно выводимое поле "один ко многим"?
    Например, вывожу список пользователей(`users(id name address_id)`), у которых есть подсущность адресс(Таблица `address (id name )` подсоединена к `user`, как один к многим)). Для вывода в twig адреса, делается дополнительный запрос в бд(select * from address where id=1). Поэтому, правильнее сделать изначально выборку нужных полей
  • Вопросы по теории symfony?

    @Hfnas Автор вопроса
    спасибо за внимание!
    что показывает symfony debug?

    про это не знаю, пользуюсь дебагом от php. Придется изучить. Поэтому не скажу совсем. За подсказку спасибо,изучить инструмент надо будет.
    там же если память не изменяет в последних версиях симфони можно посмотреть и статистику выполнение запросов.
    - про это тоже не скажу. Эти операции вставки-обновления делает команда, заданная в консоли. Как отследить тоже не знаю( я обернула строчки в тайминг, чтобы вычислить, сколько что работает)
    Но хочу сказать , с каждой итерацией растет сохранение сущности в бд.(1 способ? yначиная с середины сохранение сущности занимает 2сек)
    А какие красивые решения, мне главное, заполнить таблицу по формулам на основе 3х таблиц. Выборки быстрые. а вот вставка/обновление через сущность (1способ) 2440 строчек занимает 3мин,
    а второй способ 3 сек. (во втором способе придется делать создание через сущность, так как мы не можем делать createBuilder()->insert())

    Возможно, проблема в том, что придется сохранять поле (многое к одному.) Как я поняла Вас, правильнее делать сохранение в бд через сущность(те первым способом).
  • Вопросы по теории symfony?

    @Hfnas Автор вопроса
    tukreb, 2440 строк заполняет за 3 мин
    $productBD = $this->getOne($id);
                $flagCreate = false;
                if ($productBD == null) {
                    $productBD = new Modeling();
                    $productBD->setId($id);
                    $flagCreate = true;
                }
    
                $productBD->setProduct($product->getProduct());
                $productBD->setDateModeling($dateObj);
    ....
    
    
                if ($flagCreate)
                    $this->setCreate($productBD);
                else
                    $this->setSave();


    2440 строк заполняет за 30сек
    $this->createQueryBuilder("m")
                    ->update()
                    ->set('m.product',':product')
                    ->set('m.dateModeling',':dateModeling')
                    ....
                    ->where("m.id=:id")
    
                    ->setParameter('product',$productsEntity->getGuid())
                    ->setParameter('dateModeling',$dateObj->format("Y-m-d"))
                 ....
    
                    ->setParameter('id', $id)
                    ->getQuery()
                    ->execute();
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    Rsa97, Ух-ты, класс надо попробовать перевести все в бинарное представление. Спасибо большое!
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    Михаил, благодарю за ваше внимание!
    1 вопрос отпал. Спасибо Вам большое! Просто в книге https://www.oreilly.com/library/view/high-performa... , правда 2 издания указано, что гуиды нежелательно использовать в качестве первичного ключа, из-за трудности вставки (индекс изначально отсортирован), то есть при каждом добавлении приходится перестраивать индекс.

    Даже, если я добавлю первичный ключ интом, мне придется добавить индекс уже по полю гуид(добавление индекса тоже влияет на вставку записи в бд). Итог, что лучше 2 индекса уникальных или один? Конечно, один. Спасибо Вам большое! А что скажете по поводу бинарного представления uuid? правда, придется при вставке гуида переводить в бинарное представление, затраты на такую операцию окупаются? Да, не спорю, при селекте будет отлично выбираться. Спасибо Rsa97 за мысль перевода гуидов в бинарное представление.

    2) Я часто делаю сортировку и группировку по нескольким полям из разных таблиц (минимум из трех), запрос пока вроде быстро идет(делаю EXPLAIN ANALYZE, смотрю на (actual time=0.160..0.163 ), но мне не нравится filesort (если делаешь explain)., в тоже числе по агрегирующим функциям , такими как сумма
    Мы же должны избавиться от запросов типа where, all, memory, filesort,
    Самый лучший запрос, наверное то, который использует индекс. Поэтому я добавляю из других таблиц поля в одну, чтобы по нему добавить индекс(2 поля из одной таблицы, одно поле из другой таблицы). Но, стоимость вставки не оправдана, если делать вставку записи через сущность. Поэтому у меня возник таколй вопрос. В доках написано индекс нужен для полей where, order by, group by. Может, я что-то не уловила, подскажите, пожалуйста, что поискать.

    и еще у меня есть на сайте функция сортировка по каждому столбцу, естественно по каждому полю я не добавляю индекс, так как это затратно при вставке записи. Правда, не знаю, верный у меня подход? Но , бд будет расти постоянно.

    Например, есть таблицы `products`, `products_group` . Для таблицы `products` указан столбец количество на складе. Далее для таблицы `products_group` нужно указать количество товаров по группам, в этом случае делают денормализацию?
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    Rsa97, спасибо БОЛЬШОЕ за подсказку. То есть можно не добавлять ид в каестве первичного ключа, а гуид перенести в поле "внешний код", и тоже на него индекс. С другой стороны судя по скудной инфе, которую я прочитала, что простые ид плохи при реплике.
    Повторюсь, у меня скудная инфа, и знании не хватает. В любом случае спасибо за подсказку.
    Я все время импортирую с 1с, не подскажете затраты на перевод гуида в бинарное представление какие будут?
    Выбор таких гуидов, не спорю, будет быстро.
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    Алексей Уколов, спасибо, его и читала, только 2 издание. может, стоит посмотреть поздние издания?
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    Akina,
    "долгая вставка индекса первичного ключа" - это как бы сказки. Или, если на самом деле тормозит - то весьма вряд ли по вине MySQL, там же посредников не счесть
    .
    Тормоза нет, просто уточняю . я прочитала об этом в книге https://www.oreilly.com/library/view/high-performa... , что гуид нежелательно делать, а нужно ид(автоинкремен -целое число). А исходя с Ваших слов ,то есть можно гуид сделать первичным ключом в моем случае, если импортируешь с 1с.
    или же нужно сделать в качестве первичного ключа автоинкремен целое число?
    Сортировка и группировка выполняется не по таблицам, а по выражениям. Но это к слову.

    В этом случае мы делаем денормализацию, и добавляем столбцы из других таблиц в одну таблицу. Верно?
    "сортируемые и группируемые поля добавить в самый конец индекса" ?? Какого индекса-то? не говоря уж о том, что индексов по выражениям, включающим поля нескольких таблиц - не существует. Не только в MySQL - вообще в любой СУБД.

    я знаю, поэтому нужно из другой таблицы столбцы добавить в нужную таблицу, чтобы создать индекс. В этом случае мы делаем денормализацию, и добавляем столбцы из других таблиц в одну таблицу.
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    ThunderCat, Доброго Вам вечера!
    Вот такое большущее СПАСИБО Вам за столь подробный ответ!!!!

    Естественно это настройки сервера, в частности выделение памяти под временные таблицы, чтобы их тип был инмемори, а не диск. Нужен баланс между доступной памятью и выделенной под оптимизацию запросов в памяти. Кэш запросов, индексов, временные таблицы - все это желательно поместить в память.


    Буду гуглить "Кэш запросов, индексов, временные таблицы , чтобы в память поставить."
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    ThunderCat, большое спасибо за развернутый и подробный ответ от Души!!!
    Можно уточнить некоторые нюансы?

    Составной индекс если будут использоваться много полей, и отдельные если каждое из полей будет одиночной сортировкой.


    Посмотрев ролики в ютуб про индексы, говорят, что если таблица небольшая, то индексы лучше не создавать. Вопрос, что понимается под небольшой таблицей? Ну в моем случае таблицы будут расти.

    Или если у меня веб-странице есть таблица Users, при клике на заголовок которой меняется сортировка по убыванию/возрастанию, то нужно создавать индекс на каждый столбец данной таблицы?

    Аналогично, создать индекс на поле присоединяемой таблицы посредством джойна? (Например, у меня таблица Users(поля сущности:"ид", "логин", "пароль", "адрес"(ид на таблицу Address, foreign key)),есть сущность Address(поля: ид, наименование), присоединена к сущности Users как OnyToMany. Естествеено, если я вывожу таблицу пользователи("логин", "наименование адреса") на веб-странице, я добавляю индекс и на поле "Наименование" сущности Address). Повторюсь, мне нужно отсортировать "Логин" , "Наименование адреса" на веб-странице.

    Просто я вычитала в доках, что сортировка -делает временную таблицу. А я постоянно применяю сортировку в своем проекте, в тч и для расчета статистистики, и чаще всего в join-таблицах (как в случае адреса в таблице пользователи). И поэтому, правильный путь, это создать индексы на поля, которые нужно отсортировать, в тч и в join таблицах? explain показывает Using filesort, Using temporary , что очень плохо. Наверное, нужно сделать так, чтобы не показывал, добавлением индексов, верно?

    Например на сайте новостей 1 секунда это много, а на приложении с миллиардами записей статистики по мировым продажам жвачки в розницу для планирования расширения сети продаж с 30 объединениями/группировками/дистинкт выборками надцать секунд или даже минут это норм, так как задача другая совершенно.


    спасибо! За подробный ответ.

    а explain подскажет где можно подкрутить что-то на уровне индексов/памяти, код при этом вообще не трогается. Да и по большому счету 99% типовых задач не пишутся руками, а пускаются через модель/орм.



    у меня страница не превышает в запросах более 1с, но, если посмотреть профайлер симфони,explain, то я вижe что type=ALL , значит, запросы нужно оптимизировать: добавить индексы. По поводу памяти, в первые слышу, в роликах на ютубе про индексы про память не говорилось, может, быть вы имели ввиду править конфиг mysql? Пожалуйста, подскажите, в каком направлении копать, по "память"? Что погуглить?

    Если вам нужен именно конкретный запрос с конкретным набором выходных данных, менять вы его не будете, логично что крутить вы можете только структуры данных и индексы, ну может еще что-то в настройках самого сервера.


    Правильно ли я понимаю, если индексы не спасают проблему(долго выполняются), нужно настраивать сервер?
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    Zhainar, не могли бы посоветовать Хорошую книжку? проблема в основном , в подаче автора. Если написано замудренно, я мало ли что пойму, хоть читай несколько раз, все равно не поймешь.-(
  • Как правильно организовать код большой формы-калькулятора на vue.js?

    @Hfnas
    karpo518, я писала на чистом jquery, основной запрос шел посредством аякс через сервер. То есть я добавила поле, и/или изменила поле, идет аякс на сервер, отсюда сервер менял часть кода на странице. Но, все пользователю кажется все медленным, вот я и хочу разобраться. может мне vue попробовать? Правда у пользователя низкая скорость интернета 9мб.с Может, с этим связано.

    Вы не подскажете, какого рода были препятствия, Буду благодарна за ответ.
  • Как правильно организовать код большой формы-калькулятора на vue.js?

    @Hfnas
    Доброго Вам дня, удалось ли Вам сделать калькулятор, насколько он быстрый?
  • Какие причины того, что агент активный ( но не выполняется)?

    @Hfnas Автор вопроса
    Это возможен таймаут? Агент спрашивает данные с другого сервера.
  • Какие причины того, что агент активный ( но не выполняется)?

    @Hfnas Автор вопроса
    у меня в конструкции агента написано try{}catch{} , после catch{} возврат функции агента.
  • Как устранить долгое ожидание от запроса к другому серверу?

    @Hfnas Автор вопроса
    В смысле?Уточните, пожалуйста.
  • Как одновременно следить за заказами с сайта и чекам кассы?

    @Hfnas Автор вопроса
    Kalombyr, не совсем поняла , поясните
    ой небольшой опыт, в один прекасный момент всётаки нехватит.

    у меня один скрипт, который последовательно проходит по кассе, потом по заказам. и это все крутится по крону.
  • Как одновременно следить за заказами с сайта и чекам кассы?

    @Hfnas Автор вопроса
    Андрей, подскажите, а rabbitMq на хостинге таймвеб встроен?
  • Как одновременно следить за заказами с сайта и чекам кассы?

    @Hfnas Автор вопроса
    То есть так лучше? Хорошо, я посмотрю на всякий случай, на будущее ( так как я сделала сихрон ( последовательно проверяю сначала в кассе, потом в заказах).