Индексы таблиц SQL и производительность Spotfire

#sql-server #indexing #ssms #spotfire

#sql-сервер #индексирование #ssms #spotfire

Вопрос:

У меня есть проект spotfire, который ссылается на несколько больших таблиц на базе SQL Server (в одной 700 000 строк с 200 столбцами, в другой 80 000 000 строк с 10 столбцами, несколько других, которые намного меньше по сравнению). В настоящее время я использую информационные ссылки с подсказками, чтобы сузить данные перед загрузкой в spotfire. Иногда возникают проблемы с увеличением использования оперативной памяти и случайными скачками процессора после загрузки данных.

Мои вопросы, если я добавлю индексы в таблицы SQL:

  1. Улучшится ли (снизится) объем использования оперативной памяти / процессора spotfire?

  2. Поможет ли это ускорить время начальной загрузки данных?

  3. Должен ли я вообще беспокоиться?

Я использую SQL Server 2016 и Tibco Spotfire Analyst 7.7.0 (версия сборки 7.7.0.39)

Спасибо

Комментарии:

1. с таблицами данных этих измерений вам, вероятно, следует изучить их агрегирование, прежде чем они попадут в Spotfire. часто «потребители» анализа требуют «все данные», но на самом деле им нужна только конкретная аналитика или результаты или что-то еще. Я рекомендую проводить больше исследований с вашими конечными пользователями, чтобы определить, что конкретно им нужно, и разработать соответствующий дизайн. на самом деле это не проблема Spotfire; это проблема с данными.

2. запоздалая мысль: если по какой-то причине это невозможно (нет никаких причин, по которым это должно быть невозможно; никто не собирается просматривать 80 миллионов записей по отдельности), обратите внимание, что каждая версия Spotfire получает улучшения производительности. вы увидите повышение производительности при обновлении. 7.11 — хороший выбор, потому что это текущая версия LTS.

Ответ №1:

Если вы добавляете индексы без логической причины, это фактически замедляет работу вашей системы, потому что индексы постоянно обновляются после каждой вставки, ОБНОВЛЕНИЯ, УДАЛЕНИЯ. Вы можете игнорировать мое утверждение, если в вашей базе данных есть статические данные, и вы обычно не меняете содержимое.

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

Следующие URL-адреса помогут вам:

https://www.liquidweb.com/kb/mysql-performance-identifying-long-queries/
https://www.eversql.com/choosing-the-best-indexes-for-mysql-query-optimization/