Учебники

SQL — настройка базы данных

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

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

  • Используйте структуру базы данных 3BNF, описанную в этом руководстве в главе «Основные понятия СУБД».

  • Избегайте преобразования цифр в символы, поскольку цифры и символы сравниваются по-разному и приводят к снижению производительности.

  • При использовании оператора SELECT извлекайте только ту информацию, которая вам требуется, и избегайте использования * в запросах SELECT, поскольку это приведет к ненужной загрузке системы.

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

  • Полное сканирование таблицы происходит, когда столбцы в предложении WHERE не имеют индекс, связанный с ними. Вы можете избежать сканирования полной таблицы, создав индекс для столбцов, которые используются в качестве условий в предложении WHERE оператора SQL.

  • Будьте очень осторожны с операторами равенства с действительными числами и значениями даты / времени. У обоих из них могут быть небольшие различия, которые не очевидны для глаз, но делают невозможным точное совпадение, таким образом предотвращая когда-либо ваши запросы возвращать строки.

  • Используйте сопоставление с образцом разумно. LIKE COL% является допустимым условием WHERE, возвращая возвращаемый набор только к тем записям, данные которых начинаются со строки COL. Однако COL% Y не уменьшает количество возвращаемых результатов, так как% Y не может быть эффективно оценено. Усилия по проведению оценки слишком велики, чтобы их можно было рассмотреть. В этом случае используется COL%, но% Y выбрасывается. По той же причине ведущий подстановочный знак% COL эффективно предотвращает использование всего фильтра.

  • Точно настройте свои запросы SQL, изучив структуру запросов (и подзапросов), синтаксис SQL, чтобы выяснить, разработали ли вы таблицы для поддержки быстрой обработки данных и написали ли запрос оптимальным образом, позволяя вашей СУБД эффективно управлять данными ,

  • Для запросов, которые выполняются на регулярной основе, попробуйте использовать процедуры. Процедура — это потенциально большая группа операторов SQL. Процедуры компилируются ядром базы данных и затем выполняются. В отличие от оператора SQL, ядру базы данных не нужно оптимизировать процедуру перед ее выполнением.

  • Избегайте использования логического оператора ИЛИ в запросе, если это возможно. ИЛИ неизбежно замедляет практически любой запрос к таблице существенного размера.

  • Вы можете оптимизировать массовую загрузку данных, удалив индексы. Представьте себе таблицу истории со многими тысячами строк. Эта таблица истории также может иметь один или несколько индексов. Когда вы думаете об индексе, вы обычно думаете о более быстром доступе к таблице, но в случае пакетной загрузки вы можете извлечь выгоду, отбросив индекс (ы).

  • Выполняя пакетные транзакции, выполняйте COMMIT после создания достаточного количества записей вместо их создания после каждого создания записи.

  • Запланируйте регулярную дефрагментацию базы данных, даже если это означает разработку еженедельной программы.

Используйте структуру базы данных 3BNF, описанную в этом руководстве в главе «Основные понятия СУБД».

Избегайте преобразования цифр в символы, поскольку цифры и символы сравниваются по-разному и приводят к снижению производительности.

При использовании оператора SELECT извлекайте только ту информацию, которая вам требуется, и избегайте использования * в запросах SELECT, поскольку это приведет к ненужной загрузке системы.

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

Полное сканирование таблицы происходит, когда столбцы в предложении WHERE не имеют индекс, связанный с ними. Вы можете избежать сканирования полной таблицы, создав индекс для столбцов, которые используются в качестве условий в предложении WHERE оператора SQL.

Будьте очень осторожны с операторами равенства с действительными числами и значениями даты / времени. У обоих из них могут быть небольшие различия, которые не очевидны для глаз, но делают невозможным точное совпадение, таким образом предотвращая когда-либо ваши запросы возвращать строки.

Используйте сопоставление с образцом разумно. LIKE COL% является допустимым условием WHERE, возвращая возвращаемый набор только к тем записям, данные которых начинаются со строки COL. Однако COL% Y не уменьшает количество возвращаемых результатов, так как% Y не может быть эффективно оценено. Усилия по проведению оценки слишком велики, чтобы их можно было рассмотреть. В этом случае используется COL%, но% Y выбрасывается. По той же причине ведущий подстановочный знак% COL эффективно предотвращает использование всего фильтра.

Точно настройте свои запросы SQL, изучив структуру запросов (и подзапросов), синтаксис SQL, чтобы выяснить, разработали ли вы таблицы для поддержки быстрой обработки данных и написали ли запрос оптимальным образом, позволяя вашей СУБД эффективно управлять данными ,

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

Избегайте использования логического оператора ИЛИ в запросе, если это возможно. ИЛИ неизбежно замедляет практически любой запрос к таблице существенного размера.

Вы можете оптимизировать массовую загрузку данных, удалив индексы. Представьте себе таблицу истории со многими тысячами строк. Эта таблица истории также может иметь один или несколько индексов. Когда вы думаете об индексе, вы обычно думаете о более быстром доступе к таблице, но в случае пакетной загрузки вы можете извлечь выгоду, отбросив индекс (ы).

Выполняя пакетные транзакции, выполняйте COMMIT после создания достаточного количества записей вместо их создания после каждого создания записи.

Запланируйте регулярную дефрагментацию базы данных, даже если это означает разработку еженедельной программы.

Встроенные инструменты настройки

У Oracle есть много инструментов для управления производительностью операторов SQL, но среди них два очень популярны. Эти два инструмента —

  • План объяснения — инструмент определяет путь доступа, который будет выбран при выполнении оператора SQL.

  • tkprof — измеряет производительность по времени, прошедшему во время каждой фазы обработки оператора SQL.

План объяснения — инструмент определяет путь доступа, который будет выбран при выполнении оператора SQL.

tkprof — измеряет производительность по времени, прошедшему во время каждой фазы обработки оператора SQL.

Если вы хотите просто измерить истекшее время запроса в Oracle, вы можете использовать команду SQL * Plus SET TIMING ON.

Обратитесь к документации СУБД для получения более подробной информации о вышеупомянутых инструментах и ​​дефрагментации базы данных.