У меня 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 вопроса:
При указанном количестве товаров, характеристик и языков - это нормально что в БД более 4 миллионов строк?
Может ли появляться ошибка “Cannot connect to the database server” и тормозить сайты из-за такой большой таблицы с характеристиками?
Что можно предпринять в данной ситуации чтобы избавится от тормозов сайтов и ошибки “Cannot connect to the database server”
Вам требуется найти админа сервера. Скорее всего при обращении к БД начинают копится запросы, и потом БД отваливается. Надо найти запросы, которые проходят медленнее. + посмотреть настройки сервера.
15000 товаров в сумме со всекх витрин? три языка активных. Неактивные языки есть?
OPTIMIZE TABLE cscart_product_features_values удалит хвосты в таблице (удаление записей в таблице физически их не удаляет, они становятся просто скрыты и занимают объем
а вообще, можно просто ручками посмотреть, например взять несколько товаров с разных витрин и посмотреть сколько записей в таблице приходится на каждый, сделать фактическую статистическую оценку вместо голой математики
Я бы добавил памяти в сервак и увеличил значение innodb_buffer_pool_size = 6GB гдет-то, а не вот этот вот все ) Оптимайз таблиц всех по крону ежедневно ночью. При оптимизации перестраивается индекс. Еще бы глянул long queries и там бы тоже тогось… может индекс где-то нужен…
полностью согласен, тут дедик нужен, стакими объемами. Когда одна таблица весит 400 мегов, а при многократных LEFT JOIN объем требуемой памяти для построения виртуальной таблицы растет не сложением, а перемножением участвующих таблиц - так что легко и за 6 гигов перевалить (пиково), есть конечно своп, он хоть на SSD но все равно отсюда и те тормоза
Спасибо за ответы и советы. Количество витрин не является показателем дохода, к сожалению :((( Если была бы возможность, то конечно же можно было бы и для каждой витрины отдельный сервер брать и администратора. Но, к сожалению, нет такой возможности…
Хотелось бы чтобы кто-то у кого также больше 10 витрин поделился информацией по количеству строк в таблице с характеристиками и ее размере…
Так а что это даст, если я импортирую БД в новую версию? Ведь в ней уже есть более 4 миллионов строк, так они и останутся, а мне важно понять нет ли дублей строк в этой таблице…
Понятия не имею, я в бд cs вообще особо не заглядывал. Но судя по тому что там 0 в вариации, видимо там где есть variant id где то еще цепляется таблица с вариантами, где возможно велью разные и указаны…
а где 0 там сразу пишется. Возьмите один товар какой-то и на его примере посмотрите.