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

12
denis920
На сайте с 26.02.2009
Offline
183
751

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

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

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

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

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

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

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

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

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

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
D
На сайте с 28.06.2008
Offline
1101
#2

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

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

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

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

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

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

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

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

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

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

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

Что такое WP ?

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

WP - Вордпрес

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

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

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

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

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

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

Домены на продажу: https://p20.ru/collection/domains-for-sale
danforth
На сайте с 18.12.2015
Offline
153
#10
onep:
можно сменить тип таблицы на MyISAM.

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

Junior Web Developer
12

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