Как предотвратить Delphi ADO от загрузки всей таблицы в память?

Чтобы ответить на ваш вопрос,

  1. Всегда ли есть компромиссы в производительности запросов или их можно оптимизировать с помощью изменений конфигурации, горизонтального масштабирования оборудования?
< / blockquote>

Если вы используете только инструмент куста от Hadoop для запросов Adhoc, тогда это неправильный выбор для запросов adhoc и анализа данных. Мы рассмотрим лучший вариант в соответствии с вашим вариантом использования и сделаем выбор технологий из Hive LLAP, HBase, Spark, SparkSQL, Spark Streaming, Apache storm, Imapala, Apache Drill и Prestodb и т. Д.

  1. Может ли он когда-нибудь быть таким же быстрым, как что-то вроде Netezza - который использует некоммерческое аппаратное обеспечение, но работает на аналогичной архитектуре?

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

  1. Где Hadoop великолепен и абсолютно превосходит все остальное в сравнении?

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

Надеюсь, это поможет.

7
задан Andy 5 December 2008 в 11:22
поделиться

5 ответов

Вы могли использовать TADOQuery для ограничения набора результатов с запросом SQL. Или Вы могли использовать TADOTable и установить CursorLocation на Серверный курсор для предотвращения клиента, загружающего полный набор результатов в памяти.

10
ответ дан 6 December 2019 в 14:11
поделиться

Вы могли использовать это adoTable с Сервером курсор OpenForwardOnly и TCLientDataset с набором PacketRecords к ненулевому значению. Работавший замечательно, когда я должен был записать приложение для нагнетания данных от MSSQL до Oracle на специализированном пути с таблицами с миллионами записей.

РЕДАКТИРОВАНИЕ-> Это было бы что-то на строках этого:

procedure ConfigCDSFromAdoQuery(p_ADOQ: TADOQuery; p_CDS: TClientDataset; p_Prov: TDatasetProvider);
begin
  If p_ADOQ.Active then p_ADOQ.Close;
  p_ADOQ.CursorLocation := clServer;
  p_ADOQ.CursorType := ctOpenForwardOnly;
  p_Prov.Dataset := p_ADOQ;
  p_CDS.SetProvider(p_Prov);
  p_CDS.PacketRecords := 100;
  p_CDS.Open; 
end ;

Я сделал это все кодом, но большинство которых можно сделать во время проектирования.

5
ответ дан 6 December 2019 в 14:11
поделиться

Эта статья является конкретным BDE, но относится к ADO или большинству библиотек доступа клиентских данных.

http://dn.codegear.com/article/28160

Я рекомендовал бы использовать TADODataSet (это "ближе" к уровню ADO, чем TADOQuery), и выбор только данных клиентские потребности путем обеспечения пользовательской поисковой формы (диапазон дат, список определенных объектов, и т.д.)

Удачи

1
ответ дан 6 December 2019 в 14:11
поделиться
  1. На Вашем datamodule, где "MeasurementsADOTable" в настоящее время находится, отбросьте TADOQuery и назовите его "MeasurementsADOQuery"
  2. Установите свойство Connection MeasurementsADOQuery к MyADOConnection (принимающий дело обстоит так на основе небольшого обеспеченного фрагмента кода.)
  3. Я также предполагаю, что Вы отображаете сетку или иначе используете DataSource - изменяют свойство "DataSet" компонента DataSource от MeasurementsADOTable до MeasurementsADOQuery
  4. Отредактируйте фактический запрос, который будет выполняться путем установки свойства SQL MeasurementsADOQuery. (Во времени выполнения перед открытием: Измерения. SQL.Text: =, 'выбирают лучшие 10 * из измерительного порядка любой'),
  5. Анализируйте/изменяйте все ссылки в коде от MeasurementsADOTable до MeasurementsADOQuery
0
ответ дан 6 December 2019 в 14:11
поделиться

Я нашел, что ADO + Доступ w/Delphi является крайне медленным для большого количества вещей (большие чтения таблицы как, Вы описываете, но также и вставляет также, и т.д.). Мой ответ стал "Выходом с помощью ADO и Доступа в целом".

Никогда не понимал, почему это работало так плохо, особенно когда более ранние технологии казались не.

-1
ответ дан 6 December 2019 в 14:11
поделиться
Другие вопросы по тегам:

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