Формат данных SQL Server - PullRequest
1 голос
/ 07 ноября 2011

Я работаю над написанием высокопроизводительного класса извлечения / хранения данных для моего приложения, которое использует SqlDataReader для извлечения данных с сервера SQL.

Из любопытства я хотел узнать, в какую форму поступают данные с SQL-сервера. Персонажи? Binary? Другая форма?

К сожалению, я не могу отследить пакет в своем офисе, и я думаю, что этот ответ можно найти.

РЕДАКТИРОВАТЬ: Цель этого вопроса состояла в том, чтобы определить формат, в котором данные извлекаются с сервера SQL, чтобы обеспечить как можно меньше манипуляций перед размещением их в структуре данных.

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

1 Ответ

3 голосов
/ 07 ноября 2011

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

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

Если вы извлекаете большие порции данных (например, мультимедийные файлы, хранящиеся в базе данных), есть несколько конкретных способов использования класса SqlCommand, а именно флаг поведения SequentialAccess:

Предоставляет DataReader способ обрабатывать строки, содержащие столбцы. с большими двоичными значениями. Вместо того, чтобы загружать весь ряд, SequentialAccess позволяет DataReader загружать данные в виде потока. Вы затем можно использовать метод GetBytes или GetChars, чтобы указать байт место для начала операции чтения и ограниченный размер буфера для возвращаемые данные.

Пример использования этого см. В Загрузка и выгрузка изображений с SQL Server через ASP.Net MVC .

...