У нас есть приложение, которое выполняет задание для обработки ряда строк из представления mssql. Этот вид содержит много строк, а данные вставляются с дополнительным столбцом (dataid), установленным для идентификации, предназначенным для использования нами, чтобы узнать, как далеко через набор данных, который мы получили.Помните, насколько далеко вы получили, когда хрустили большую таблицу MSSQL?
Некоторое время назад у нас были некоторые проблемы, когда вы получали только первые n строк с размером данных, большим y (y - последний самый последний последний обработчик данных, который мы обработали). Казалось, что строки не были возвращены в правильном порядке, а это значит, что когда мы захватили ряд строк, казалось, что dataid некоторых из строк был неуместен, а это означало, что мы обработали строку с dataid 100, когда мы на самом деле была только получали до 95.
например
окно/диапазон 100 строк на каждом хруст. но если dataid данных строк не находится в последовательном порядке, запрос, получающий следующие 100 строк, может содержать данные, которые действительно должны были быть расположены в следующем хрусте. И тогда строки будут пропущены при выполнении следующего хруста.
Заказ на данные поможет решить проблему, но это способ замедлить работу. Есть ли у вас какие-либо предложения, как это можно было бы сделать лучше/работать?
Когда я говорю много строк, я имею в виду несколько миллиардов строк, и да, если вы думаете, что это абсолютно безумно, вы совершенно правы!
Мы используем Dapper для сопоставления строк с объектами. Это полностью прочитанное.
Надеюсь, этот вопрос не слишком расплывчатый. Спасибо заранее!
У вас есть указатель на 'dataid'? Является ли это индексированным представлением? – Jodrell
Мы делаем, и производительность была довольно хорошей, с около 700 млн. Рядов, но производительность за последние несколько дней действительно сильно ухудшила базу данных. Я не знаю, был ли обновлен/перестроен индекс, но я узнаю, так ли это. База данных удалена, поэтому у меня нет доступа, и я не знаю, какие операции были запущены на ней, если новые данные были добавлены и т. Д. – Moulde
вам нужно посмотреть фактический план выполнения, как это было предложено моим ответ ниже http://stackoverflow.com/a/16539083/659190 – Jodrell