TG Telegram Group & Channel
ServerAdmin.ru | United States America (US)
Create: Update:

​​Расскажу своими словами про индексы в Mysql. Информация теоретическая и будет скорее всего актуальна и для других баз, но лично я из всех баз больше всего работаю с Mysql. Рассказать про индексы решил, так как знать их хотя бы немного необходимо и системному администратору, и devops инженеру. Я сам долгое время только примерно представлял, что это вообще такое, но в итоге разобрался со временем.

Индексы нужны, чтобы быстро находить данные в базе. Например, у вас есть таблица, где 10 тысяч строк и колонка с датами. Вам нужно быстро найти какую-то дату. Для этого придётся каждую колонку сравнить с искомой, чтобы найти совпадения. Это долго. Вы можете создать индекс для этой колонки, который выстроит даты по порядку. В таком случае с помощью поиска вы сразу же найдёте все совпадающие значения, так как они отсортированы по порядку. Не нужно будет перечитывать всю таблицу.

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

На первый взгляд может показаться, что если сделать индексы на все колонки, то база будет работать быстрее. Но это не так. Перестройка индексов после изменения данных ресурсоёмкая операция, так что индексы надо использовать именно там, где они больше всего нужны. Они ко всему прочему еще и место в базе занимают.

Зачем всё это нужно знать системному администратору? В каких-то простых случаях это помогает решать проблемы производительности. К примеру, база тормозит. Включаете slow-log и смотрите все запросы, которые выполняются дольше секунды. Если явно видите, что постоянно тормозит конкретный запрос, можете ускорить его, создав индекс по нужной колонке.

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

#mysql

​​Расскажу своими словами про индексы в Mysql. Информация теоретическая и будет скорее всего актуальна и для других баз, но лично я из всех баз больше всего работаю с Mysql. Рассказать про индексы решил, так как знать их хотя бы немного необходимо и системному администратору, и devops инженеру. Я сам долгое время только примерно представлял, что это вообще такое, но в итоге разобрался со временем.

Индексы нужны, чтобы быстро находить данные в базе. Например, у вас есть таблица, где 10 тысяч строк и колонка с датами. Вам нужно быстро найти какую-то дату. Для этого придётся каждую колонку сравнить с искомой, чтобы найти совпадения. Это долго. Вы можете создать индекс для этой колонки, который выстроит даты по порядку. В таком случае с помощью поиска вы сразу же найдёте все совпадающие значения, так как они отсортированы по порядку. Не нужно будет перечитывать всю таблицу.

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

На первый взгляд может показаться, что если сделать индексы на все колонки, то база будет работать быстрее. Но это не так. Перестройка индексов после изменения данных ресурсоёмкая операция, так что индексы надо использовать именно там, где они больше всего нужны. Они ко всему прочему еще и место в базе занимают.

Зачем всё это нужно знать системному администратору? В каких-то простых случаях это помогает решать проблемы производительности. К примеру, база тормозит. Включаете slow-log и смотрите все запросы, которые выполняются дольше секунды. Если явно видите, что постоянно тормозит конкретный запрос, можете ускорить его, создав индекс по нужной колонке.

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

#mysql


>>Click here to continue<<

ServerAdmin.ru






Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)