Оптимизация базы данных MySQL

12
denis920
На сайте с 26.02.2009
Offline
161
733

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

Есть самописный скрипт, он работает на php MySQL

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

По суди 20 мб это не так много для базы данных, есть сайта и с гигабайтными базами.

Вопрос, почему так происходит? Как можно оптимизировать работы базы данных?

По сути в базе большой размер имеет одна таблица, типа post в wordpress, может ее разбить на несколько таблиц. Но однако это не сильно изменит ситуацию ведь когда база будет скажем 40 мб, все вернется.

Подскажите в какую сторону смотреть?

LEOnidUKG
На сайте с 25.11.2006
Offline
1624
#1

Проставка индексов.

✅ Трастовых площадок под размещение статей и ссылок. Опыт 14 лет! ( https://searchengines.guru/ru/forum/675690 ) ⭐ Купить вечные трастовые ссылки для сайта ( https://getmanylinks.ru/?srh ) ⭐ Ускорение ваших сайтов (WP, Opencart и др.) + Настройка сервера ( https://searchengines.guru/ru/forum/997205 )
D
На сайте с 28.06.2008
Offline
1022
#2

Смотрите какие запросы выполняет скрипт - потом в phpMyadmin сами выполняете эти запросы добавив в начало EXPLAIN и анализируете.

Как правильно заметил Леня - скорее всего нужно добавить индекс на поля по которым идет выборка.

20 мб это вообще ни о чем, на таких объемах я видел тормоза только когда вообще не было индексов (включая первичного).

denis920
На сайте с 26.02.2009
Offline
161
#3
Dram:
20 мб это вообще ни о чем, на таких объемах я видел тормоза только когда вообще не было индексов (включая первичного).

Насколько я понял, индексов нет вообще.

Подскажите, а простановка индексов отразиться на структуре базы? Я имею ввиду, придется наполнять сначала сайт?

Aisamiery
На сайте с 12.04.2015
Offline
227
#4
denis920:
придется наполнять сначала сайт?

нет не придётся

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
O
На сайте с 30.09.2019
Offline
18
#5

....................

denis920
На сайте с 26.02.2009
Offline
161
#6
onep:
WP сам расставляет индексы в таблицах при установке. Ни чего там трогать не нужно.

Что такое WP ?

D
На сайте с 28.06.2008
Offline
1022
#7

WP - Вордпрес

Создание индексов не затрагивает данные. (ничего не сотрется)

O
На сайте с 30.09.2019
Offline
18
#8
denis920:
Что такое WP ?

Извините, к топу отношение не имеет. Я невнимательно прочитал. Советовали правильно, расставьте индексы.

При большом количестве записей запрос типа "SELECT COUNT(`id`)" тормозит в таблицах InnoDB. Если нет другого способа, можно сменить тип таблицы на MyISAM.

E
На сайте с 01.10.2017
Offline
42
#9

onep, это только в том случае, когда в запросе нет условия, т.е. когда определяется полное количество записей в таблице. В остальном "тормозит" точно так же. Кстати, полное количество записей можно кэшировать триггерами и использовать для выборки более "легкий" запрос, чем SELECT COUNT(*) ;)

danforth
На сайте с 18.12.2015
Offline
152
#10
onep:
можно сменить тип таблицы на MyISAM.

Не нужно вообще использовать в 2к20 MyISAM. А если тормозит SELECT COUNT(*), то надо подумать, нужно ли вообще вам точное количество строк, если да, то зачем? Для пагинации, или просто юзеру показать количество товаров в категории. Если для пагинации, то нужно юзать курсор и next-next пагинацию. Если для того, чтобы показать примерное количество строк в таблице, брать аппроксимизированные данные из таблицы information_schema.

Junior Web Developer
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий