В базе данных в таблице cs_product_features_values более 4 миллионов строк - это нормально?

Здравствуйте.

В БД в таблице cs_product_features_values, где хранятся характеристики более 4 миллионов строк и таблица уже весит 425 Мб

У меня 15 витрин. На всех витринах 14781 товар, 48 характеристик и три языка активных.
Должно быть строк 14781*48*3= 2 128 464, если я правильно понимаю, а у меня больше 4 миллионов строк… Математика правильная? Или должно быть по другому?

Есть много характеристик которые выбраны по несколько штук для одного товара, видимо это тоже влияет и добавляет в общее количество строк… Или нет?

Проблема заключается в том, что практически каждый день, а то и несколько раз в день все витрины перестают работать и я получаю ошибку “Cannot connect to the database server”, вот такую:

Также подтупливают сайты часто…

Мне сказали, что скорее всего появление этой ошибки и тормоза сайтов как раз и связаны с этой огромной таблицей в БД, где более 4 млн. строк… У меня VPS - 6 GB RAM, 2 CPU, 70 GB SSD-диск.

Сейчас 3 вопроса:

  1. При указанном количестве товаров, характеристик и языков - это нормально что в БД более 4 миллионов строк?
  2. Может ли появляться ошибка “Cannot connect to the database server” и тормозить сайты из-за такой большой таблицы с характеристиками?
  3. Что можно предпринять в данной ситуации чтобы избавится от тормозов сайтов и ошибки “Cannot connect to the database server”

Заранее благодарен за помощь.

Вам требуется найти админа сервера. Скорее всего при обращении к БД начинают копится запросы, и потом БД отваливается. Надо найти запросы, которые проходят медленнее. + посмотреть настройки сервера.

Спасибо. Это к вопросу №3. А как можно найти эти запросы? В логах сервера ошибок нет…

А что по поводу 1 и 2 вопросов?

А версия какая? Был баг в старых версиях, значение хар-к в базе дублировались

Куча витрин, куча товаров… на 2 сервака разбить денег нет???

15000 товаров в сумме со всекх витрин? три языка активных. Неактивные языки есть?
OPTIMIZE TABLE cscart_product_features_values удалит хвосты в таблице (удаление записей в таблице физически их не удаляет, они становятся просто скрыты и занимают объем
а вообще, можно просто ручками посмотреть, например взять несколько товаров с разных витрин и посмотреть сколько записей в таблице приходится на каждый, сделать фактическую статистическую оценку вместо голой математики

Я бы добавил памяти в сервак и увеличил значение innodb_buffer_pool_size = 6GB гдет-то, а не вот этот вот все ) Оптимайз таблиц всех по крону ежедневно ночью. При оптимизации перестраивается индекс. Еще бы глянул long queries и там бы тоже тогось… может индекс где-то нужен…

полностью согласен, тут дедик нужен, стакими объемами. Когда одна таблица весит 400 мегов, а при многократных LEFT JOIN объем требуемой памяти для построения виртуальной таблицы растет не сложением, а перемножением участвующих таблиц - так что легко и за 6 гигов перевалить (пиково), есть конечно своп, он хоть на SSD но все равно отсюда и те тормоза

Меня другое удивляет… столько товаров и витрин. ну найди админа на аутосоре хотяб… а нет это маниакальное желание все самому лепить…

а может это он и есть :wink:

2 лайка

Спасибо за ответы и советы. Количество витрин не является показателем дохода, к сожалению :((( Если была бы возможность, то конечно же можно было бы и для каждой витрины отдельный сервер брать и администратора. Но, к сожалению, нет такой возможности…

Хотелось бы чтобы кто-то у кого также больше 10 витрин поделился информацией по количеству строк в таблице с характеристиками и ее размере…

Версия движка - CS-Cart 4.7.1.SP3 RU. А как можно проверить есть ли дубли строк характеристик в базе?

Да. В сумме со всех витрин. Да, три активных языка. Неактивных языков нет.

ну поставить более свежую версию на тестовом сервере, накатить базу импортом, сравнить результат…

Так а что это даст, если я импортирую БД в новую версию? Ведь в ней уже есть более 4 миллионов строк, так они и останутся, а мне важно понять нет ли дублей строк в этой таблице…

Если посмотреть таблицу в админке, то у многих характеристик пустое поле value:

Разве не у каждой характеристики должно быть заполнено это поле значением характеристики?

Неправильно выразился, не накатить бд, а накатить товары импортом. Через импортилку стандартную. Там возможно дубли и уйдут, как скзазал человек выше.

Понятия не имею, я в бд cs вообще особо не заглядывал. Но судя по тому что там 0 в вариации, видимо там где есть variant id где то еще цепляется таблица с вариантами, где возможно велью разные и указаны…
а где 0 там сразу пишется. Возьмите один товар какой-то и на его примере посмотрите.

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