Size: a a a

2021 April 26

C

Comrade Gagarin in Drupal RU
для совместимости между разными субд. на слоупочность это не влияет
источник

AK

Alexey Korepov in Drupal RU
А, похоже это в MySQL 8.0 что-то поломали со скоростью COUNT(*) запросов если в таблице есть поле JSON: https://bugs.mysql.com/bug.php?id=97709
источник

ИЛ

Иван Лещёв in Drupal RU
не, это всратый конструктор
источник

ИЛ

Иван Лещёв in Drupal RU
в доктрине такой же
источник

AK

Alexey Korepov in Drupal RU
Ну, судя по EXPLAIN - mysql такую конструкцию сам как-то разруливает, выводит операции такие же что и при простом запросе:

SELECT COUNT(*) FROM my_entity
источник

ИЛ

Иван Лещёв in Drupal RU
а ты сортировку добавь
источник

AK

Alexey Korepov in Drupal RU
Ну а тут по результатам EXPLAIN - лишний INNER JOIN  самого себя он разрулить не может, в результате тратит кучу ресурсов на ненужный джойн. Друпал похоже джойнит для надёжности из-за того, что у сущности могут быть ревижены, переводы и т.п.  Но у меня ж простейшая сущность без ревиженов и других фичей...
источник

C

Comrade Gagarin in Drupal RU
Сколько у тебя сущностей, что ты переживаешь за оверхед?
источник

AK

Alexey Korepov in Drupal RU
6 мильёнов, и оба запроса выполняются более 100 секунд ;( Первый - из-за бага mysql, а вот второй - похоже из-за тупизны друпала ;(
источник

C

Comrade Gagarin in Drupal RU
не, 100 секунд это какие-то нереальные цифры
источник

AK

Alexey Korepov in Drupal RU
вот как раз по этой причине и полез дебажить и вот нарыл эти сюрпризы друпаловского конструктора запросов ;(
источник

ИЛ

Иван Лещёв in Drupal RU
секунд?
источник

AK

Alexey Korepov in Drupal RU
да, карл! Причём соседняя таблица с примерно соразмерным кол-вом рядов (6 мильёнов) но без поля JSON - считается мгновенно, вот пример:

mysql> select count(*) from ati_load;
+----------+
| count(*) |
+----------+
|  6354445 |
+----------+
1 row in set (8.02 sec)

mysql> select count(*) from ati_load_json;
+----------+
| count(*) |
+----------+
|  6433889 |
+----------+
1 row in set (5 min 55.18 sec)
источник

AK

Alexey Korepov in Drupal RU
решил отписаться в баге mysql - надо регаться, думаю ну недолго же - почту укажу и гатово, но... https://i.imgur.com/mLZWDtZ.png
...подтверждать аккаунт наверно письмом через почту россии придётся ;)
источник

C

Comrade Gagarin in Drupal RU
попробуй вместо * указать первичный ключ
источник

C

Comrade Gagarin in Drupal RU
но и 8 секунд много, вангую что-то поломано
источник

AP

Andrey Postnikov in Drupal RU
А если заменить * на 1? Раньше это очень мускулу помогало
источник

AK

Alexey Korepov in Drupal RU
ключ не помогает, уж пробовал, там у mysql в innodb всё грустно с этим: https://www.percona.com/blog/2006/12/01/count-for-innodb-tables/ так что 8 секунд это норма, а вот 5 минут - уже нифига не норма ;)
источник

AK

Alexey Korepov in Drupal RU
видимо мне пора на постгрес переезжать с такими жирными таблицами ;)
источник

AP

Andrey Postnikov in Drupal RU
> So remember Innodb is not slow for ALL COUNT(*) queries but only for very specific case of COUNT(*) query without WHERE clause. It does not mean I would not like to see it fixed though, it is pretty annoying.
Удивлен, что за 10 лет так и не починили
источник