Как DataReader работает?

У меня была та же проблема, и мое решение не является новым, но подробно излагает предыдущие ответы. В Вашем webpack.dev.js можно использовать следующую конфигурацию для devServer. Обратите внимание на эти stats раздел:

module.exports = merge(common, {
  mode: 'development',
  devtool: 'source-map',
  devServer: {
    historyApiFallback: true,
    compress: true,
    port: 3420,
    inline: true,
    stats: {
      colors: true,
      chunks: false,
      hash: false,
      version: false,
      timings: false,
      assets: false,
      children: false,
      source: false,
      warnings: true,
      noInfo: true,
      contentBase: './dist',
      hot: true,
      modules: false,
      errors: true,
      reasons: true,
      errorDetails: true,
    },
  },
  plugins: [
    new webpack.HotModuleReplacementPlugin({
    }),
  ],
});
23
задан Nirajan Singh 5 September 2009 в 18:03
поделиться

4 ответа

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

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

28
ответ дан 29 November 2019 в 02:01
поделиться

Средство чтения данных считывает запись за раз, но считывает ее из основного драйвера базы данных. Драйвер базы данных считывает данные из базы данных блоками, обычно с использованием буфера размером 8 килобайт.

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

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

6
ответ дан 29 November 2019 в 02:01
поделиться

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

Совместная память является протоколом по умолчанию, когда клиент и сервер находятся на одной машине.

4
ответ дан 29 November 2019 в 02:01
поделиться

Он их читает, поскольку имеет время в фоновом режиме. К тому времени, когда вы перешли на SQL Server и закрыли соединение, все данные были переданы в фоновом режиме. Когда вы запускаете программу чтения, она вызывает SQL Server и приказывает ему начать отправку результатов. Как только запрос будет выполнен (правильно проанализирован, запрос действителен), но до его завершения он возвращается. В этот момент вы можете начать вызывать метод чтения. Однако он по-прежнему считывает и буферизует данные в фоновом режиме, поэтому при повторном вызове чтения следующая строка будет готова, ожидает в буфере, и ей не нужно переходить в базу данных.

3
ответ дан 29 November 2019 в 02:01
поделиться
Другие вопросы по тегам:

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