#sql-server #indexing #ssms #spotfire
#sql-сервер #индексирование #ssms #spotfire
Вопрос:
У меня есть проект spotfire, который ссылается на несколько больших таблиц на базе SQL Server (в одной 700 000 строк с 200 столбцами, в другой 80 000 000 строк с 10 столбцами, несколько других, которые намного меньше по сравнению). В настоящее время я использую информационные ссылки с подсказками, чтобы сузить данные перед загрузкой в spotfire. Иногда возникают проблемы с увеличением использования оперативной памяти и случайными скачками процессора после загрузки данных.
Мои вопросы, если я добавлю индексы в таблицы SQL:
-
Улучшится ли (снизится) объем использования оперативной памяти / процессора spotfire?
-
Поможет ли это ускорить время начальной загрузки данных?
-
Должен ли я вообще беспокоиться?
Я использую 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/