Повышение производительности разработчика SQL в построителе запросов

1609
Máté Juhász

Я использую Oracle SQL Developer (версия 17.3.1.279) в Windows 10 64 бит.
Он подключен к базе данных Oracle в сети через TNS.

Каждый раз, когда я впервые открываю «построитель запросов» для запроса или после некоторых изменений в коде SQL, загрузка занимает много времени (30-60 с).

Кроме того, «представление о завершении» выглядит очень медленно (3-4 с), поэтому я обычно заканчиваю вводить имена таблиц и столбцов, прежде чем они появятся (для их появления установлено значение 0,6 с).

Исходя из вышеуказанных проблем, я подозреваю, что разработчик SQL каждый раз читает информацию из базы данных. Есть ли способ заставить его хранить информацию локально? (структура базы данных достаточно постоянна, она меняется не реже одного раза в год)


Я тоже заглянул в диспетчер задач, и что странно, даже если разработчик SQL не отвечает, когда он готовит «построитель запросов», он не использует много ресурсов

Ресурсы, используемые разработчиком SQL при подготовке представления:

  • 0-1,5% моего процессора (подскочил до 7% за несколько секунд)
  • 600 - 650 МБ ОЗУ (всего 16 ГБ, из которых 9 ГБ бесплатно, поэтому я не думаю, что это будет узким местом).
  • 0 МБ / с диска и 0% сети

В целом на производительность это не влияет

  • Загрузка процессора 10-30%
  • Память: 7-8 ГБ, 8-10 ГБ, 8-9 ГБ свободно
  • использование диска: 0-5%
5
Любой запрос делает это? Ramhound 6 лет назад 0
Проблема одинакова для всех запросов, которые я выполняю, даже самый простой (`select * from MyTable`) ведет себя одинаково. Máté Juhász 6 лет назад 0
Вы проверили меню опций на наличие какой-либо очевидной функции, которая может объяснить поведение? Ramhound 6 лет назад 0
Да, я проверил, но ничего не смог найти. Máté Juhász 6 лет назад 0

1 ответ на вопрос

2
harrymc

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

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

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

Ниже перечислены другие общие советы, которые также могут помочь:

  • Отключите неиспользуемые функции в Инструменты / Возможности

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

  • Установите предпочтение Look and Feel для хост-ОС.
    Это поможет вывести GUI на хост, а не рисовать все через Java. Другие параметры Java могут быть изменены, но это только для приключений.

  • Закройте сетки и файлы, когда закончите

  • Установите ограничение истории SQL на низкое значение

  • При запуске через удаленный рабочий стол, настройте графические настройки

  • Оптимизация антивирусного сканера
    SQL-Developer - это Java-программа, состоящая из больших .jarархивов, которые являются просто .zipархивами, поэтому нет смысла сканировать весь архив только для некоторых файлов. Вы можете исключить папку SQL-Developer из сканирования на вирусы.

  • Выполнить SQL-Developer от имени администратора

  • Если ничего не помогает, есть бесплатные альтернативы Oracle SQL Developer .

Кажется, что mate явно явно хочет кешировать информацию из БД - это похоже на простой список несвязанных советов, которые могут «ускорить» программу. Не уверен, что он отвечает ни цели вопроса, ни тому, на что надеется товарищ, чтобы получить награду как есть. Journeyman Geek 6 лет назад 0
@JourneymanGeek Я все еще пробую предложения. Хотя ни один не предлагает быстрое решение, они кажутся многообещающими. И это законный ответ, безусловно, не стоит понижать голосование. Máté Juhász 6 лет назад 0
@ MátéJuhász: Если это не улучшит производительность достаточно, будет полезно собрать некоторые показатели производительности, чтобы лучше определить проблемную область. Поскольку у вас замедления на 30-60 секунд, этого времени достаточно, чтобы наблюдать в диспетчере задач или мониторе ресурсов, касается ли это процессора, диска или сети. harrymc 6 лет назад 0
@harrymc: у меня точно такая же мысль, пожалуйста, посмотрите мое обновление Máté Juhász 6 лет назад 0
Вы смотрели на общую компьютерную статистику или только на SQL-Developer? Некоторые из этих крупных продуктов состоят из нескольких процессов. Ожидания в сети также неизмеримы. harrymc 6 лет назад 0
Это для разработчика SQL, добавлены также общие цифры Máté Juhász 6 лет назад 0
Использование ЦП имеет большое значение - что его использует? Сколько у вас оперативной памяти? harrymc 6 лет назад 0
Давайте [продолжим это обсуждение в чате] (http://chat.stackexchange.com/rooms/73714/discussion-between-mate-juhasz-and-harrymc). Máté Juhász 6 лет назад 0
Я последовал вашим предложениям после отключения большинства функций и перехода к стилю Windows: перемещение и изменение размеров таблиц в построителе запросов теперь происходит намного быстрее, но подготовка построителя запросов остается прежней. Я не знаю, где / как отключить расширения. Máté Juhász 6 лет назад 0
У меня нет SQL-Developer для тестирования, но может помочь [это изображение] (http://thatjeffsmith.wpengine.com/wp-content/uploads/2012/02/sqldev_extensions.png). harrymc 6 лет назад 0
Возможное объяснение может заключаться в том, что построителю запросов необходимо получить все таблицы базы данных и всю информацию об их столбцах, прежде чем разрешить доступ к самому построителю запросов, и что загрузка всех этих данных занимает время. Для этой проблемы я могу думать только об обходном пути использования пользовательской схемы источника данных, в которую включена только необходимая табличная информация, если это возможно. harrymc 6 лет назад 0

Похожие вопросы