Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.09.08;
Скачать: CL | DM;

Вниз

выборка   Найти похожие ветки 

 
Ega23 ©   (2012-12-20 12:47) [40]


> не не не Девид Блейн у тебя неправильная уличная магия .
> .. блоб без "индексного" поля?

Согласен, это я с IBSQL попутал. Я ADO уже лет 5 не касался.


 
stas ©   (2012-12-20 12:48) [41]

Заменил MS SQL на Jet 4.0, то-же.
Так что ваши (sniknik ©)   убеждения мне не понятны.

Единственное, за что я читал в книге, так это IBDataSet, подгружает не содержимое блоб поля а его идентификатор.
По поводу оракла видел обсуждения на форуме.


 
Ega23 ©   (2012-12-20 12:52) [42]


> Заменил MS SQL на Jet 4.0, то-же.

В настройках надо поковыряться.
А в целом - всё зависит от API доступа. Стандарта нет. Посему утверждения, что "BLOBы всегда грузится целиком в рекордсет", а равно как и "BLOBы всегда грузятся в рекордсет по факту обращения к ним" являются неверными.


 
sniknik ©   (2012-12-20 13:15) [43]

> В настройках надо поковыряться.
не надо. ковыряться нужно в методах определения.

к примеру (раз уж оппонент такой упертый, и от него не дождаться), взял старую таблицу с полем типа image (mssql) делаю запрос
SELECT * FROM Table1
время доставки 20 записей - 2 сек.
после делаю сохранение рекордсета (для сохранение локально должно докачать) время 30 сек.
вопрос почему? если все уже в памяти.

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

???


 
sniknik ©   (2012-12-20 13:20) [44]

> время доставки 20 записей - 2 сек. ... время 30 сек.
уточнение, всего файл типа ADTG получился 250 мегабайт. размер выделенной памяти в диспетчере задач не вылез за 75мег.
вопрос почему? ... ну понятно.


 
stas ©   (2012-12-20 14:36) [45]


> размер выделенной памяти в диспетчере задач не вылез за
> 75мег.


По Вашим словам он должен увеличится на несколько байт.


 
Ega23 ©   (2012-12-20 14:53) [46]


> По Вашим словам он должен увеличится на несколько байт.

Не факт.
Во-первых, не было сказано, одинаков ли размер у каждой записи.
Во-вторых, всё зависит от того, как эта память не столько в Delphi-компонентах выделяется, сколько в самом OLEDB. И как и когда освобождается.


 
stas ©   (2012-12-20 14:56) [47]

sniknik ©   (20.12.12 13:20) [44]
Я ведь в [2] и не писал что будут закачаны блобы на 100%. Хотя скорее всего это так и есть, нет времени ни разбираться в этом, ни спорить.

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


 
sniknik ©   (2012-12-20 15:01) [48]

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

p.s. это такая "политика"? не сообщать ничего своего только "тянуть" и "опошлять не пониманием" от собеседника... вот из-за такого как то "зарекся" сообщать что-то "до того как первые не начнут"... видимо не зря.
p.p.s. завязываю полемику "как со взрослыми" перехожу обратно к "выкрика с места".


 
stas ©   (2012-12-20 15:09) [49]

> По Вашим словам он должен увеличится на несколько байт.
вот это имеется ввиду

> любой размер будет представлен "ссылкой" в пару тройку байт
> (хз. на конкретное значение).


А тут уже 75 мб...
что подтверждает мои слова сказанные в [2], имя блоб поля в таблице и делая выборку в 10 млн. записей можно забить ОЗУ.


 
sniknik ©   (2012-12-20 15:10) [50]

> Считаю все таки мастер должен привести основательные доводы
никто вам ничего не должен. + доводы приведены (против принципа... потому не сразу), "убийственные" доводы..., для тех кто способен понять.


 
Ega23 ©   (2012-12-20 15:14) [51]


> Я ведь в [2] и не писал что будут закачаны блобы на 100%.
>  Хотя скорее всего это так и есть, нет времени ни разбираться
> в этом, ни спорить.


В [2] - нет, в [6] - да.


> stas ©   (19.12.12 13:09) [6]
>
> sniknik ©   (19.12.12 13:02) [4]
> 1. Блоб закачивается на клиента полностью



> Считаю все таки мастер должен привести основательные доводы,
>  не для меня, для остальных читателей данной ветки.

Тебе привели основательные доводы. Тебе сказали, что ты в своём безапелляционном утверждении неправ. Тебе указали конкретные случаи, когда ты неправ.
Ещё и извиниться надо. И животноводство.


 
sniknik ©   (2012-12-20 15:16) [52]

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

в понимании пары слов путаешься а тагие глобальные заявления делаешь.


 
stas ©   (2012-12-20 15:18) [53]

sniknik ©   (20.12.12 15:10) [50]
А я и не писал что мне, поддержать имидж сайта, так сказать.
А я тут раз в пол года.
Поместил в MS ACCESS в 7 записей, ole объект (rar архив)  размером 800 кб, ну добавим еще 100 для служебной инф. 900x7 = 6,3 мб. Прирост после открытия 12 мб...


 
sniknik ©   (2012-12-20 15:26) [54]

> размером 800 кб,
что так скромно? давай по 100 мег как говорил.

> 900x7 = 6,3 мб
знаешь что такое оле обьект в акцесс? префикс постфикс самой структуры, сколько занимает знаешь? как хранится и представляется инфа в рекордсете?
"чистое" арифметическое говорит реально НИ О ЧЕМ.

к примеру строки в акцессе хранятся в юникоде (по дефаулту, если ничего не менять), а по твоему ты будешь именно то что записал в ansi?


 
stas ©   (2012-12-20 15:30) [55]

Ega23 ©   (20.12.12 15:14) [51]
1. Я написал что не мне
2. Я только увидел что мне пытаются доказать что я не прав, не признавая своей не правоты см. [49] где приведен не оспоримый факт, того что человек не прав.
Я понимаю что я здесь редко, а sniknik © постоялец так же как и ты, и пиво с вами не пью. И доказывать будете всей толпой долго и нудно лишь бы не запятнать честную репутацию друга.  
Но признать свои ошибки нужно!


 
Ega23 ©   (2012-12-20 16:14) [56]


> 2. Я только увидел что мне пытаются доказать что я не прав,
>  не признавая своей не правоты см. [49] где приведен не
> оспоримый факт, того что человек не прав.


Я нихрена не понял.
Могу сказать только одно: в gds32 BLOB подгружается по факту обращения к нему.
Точка.

З.Ы. FireBird 2.1 База ~ 30Гб.
Общий размер документов в базе - 21.086.972.740 байт
Код:

 tc := GetTickCount;
 try
   ds := FDB.OpenDataSet("select id, doc from docs where doc is not null", []);
   try
     while not ds.Eof do ds.Next;
   finally
     ds.Free;
   end;
 finally
   ShowMessage(IntToStr(GetTickCount - tc));
 end;


Время выполнения - 8672 мс.
Если просто сохранять каждый стрим в файлы - работает ~ 10 минут.
Вопросы?


 
Ega23 ©   (2012-12-20 16:18) [57]

Забыл дописать: всего документов с doc is not null  - 15185


 
Inovet ©   (2012-12-20 16:26) [58]

> [55] stas ©   (20.12.12 15:30)

Я вот читаю и не пойму: ты уже понял свою неправоту и теперь выкручиваешься или таки не понял. Вот почему ты взял 800 кБ а не 20 ГБ, как предлагалось? Так что похоже на первое предположение - выкручиваешься.

Ну и по БЛОБам. Как-то было бы глупо со стороны разработчиков тащить по-умолчанию (может и можно настроить иначе) БЛОБы на клиента. А загружать их по мере необходимомсти - неглупо, если необходимость не возникла, то и не загрузятся ненужные. Вот с такой логикой без конкретной реализации ты согласен? Если согласен, то вопрос: зачем разработчикам конкретного сервера может понадобиться поступать иначе, какие такие могут быть веские причины?


 
Jeer ©   (2012-12-20 16:28) [59]

В DBISAM (f/s) данные из блобов подгружаются только при запросе их содержимого в те или иные контейнеры.

// Вот так не загружается ни один
SELECT * FROM TEST;
SELECT MEM FROM TEST;

А, к примеру, после селекта и последующем
memo.lines.text := qu.FieldByName("MEM").AsString;

идет очевидная подгрузка.

P.S.
Собственно, аналогично и с блобами. Многократно проверено.


 
stas ©   (2012-12-20 16:54) [60]

Inovet ©   (20.12.12 16:26) [58]
т.е. ты предлагаешь мне засунуть 20ГБ в блоб поле?
с таким размером экспериментируй сам.
И где я или кто-то предлагал такую глупость?

Даже при размере блоба в 800 кб. видем, то что не 2-3 байта грузится, а полный объем.

Ну, видимо не предусмотрели...

Jeer ©  
Не знаю и спорить не буду.

Ega23 ©   (20.12.12 16:14) [56]
Согласен. Это даже указано в документации.


 
Ega23 ©   (2012-12-20 17:00) [61]


> т.е. ты предлагаешь мне засунуть 20ГБ в блоб поле?
> с таким размером экспериментируй сам.
> И где я или кто-то предлагал такую глупость?

Засунь 20 Мб в 1000 записей, в чём проблема?


 
Ega23 ©   (2012-12-20 17:02) [62]


> Согласен. Это даже указано в документации.

Ну а раз согласен, то зачем тогда этот спор

> stas ©   (19.12.12 13:09) [6]
>
> sniknik ©   (19.12.12 13:02) [4]
> 1. Блоб закачивается на клиента полностью


?


 
stas ©   (2012-12-20 21:33) [63]

Ega23 ©   (20.12.12 17:00) [61]
Зачем? о 20Гб и речи не было.

Ega23 ©   (20.12.12 17:02) [62]
Спор о том что человек назвав чушью, то что блоб поля забьют ОЗУ при открытии таблицы в 10 млн. записей. Сказал еще большую чушь и не хочет этого признать.
Если бы сказал что зависит от компонентов доступа, я бы и слова ему не сказал.


 
Игорь Шевченко ©   (2012-12-20 22:02) [64]


> Спор о том что человек назвав чушью, то что блоб поля забьют
> ОЗУ при открытии таблицы в 10 млн. записей


При открытии никто ничего не забьет.
Написать пример ?


 
sniknik ©   (2012-12-21 01:20) [65]

> Спор о том что человек назвав чушью, то что блоб поля забьют ОЗУ при открытии таблицы в 10 млн. записей.
чушь она и есть чушь, сказана безапелляционно в общем (т.е обо всем), что усложняет "диагноз".
сказал бы, что это на некоторых (тобой писанных например) компонентах доступа, и я бы не стал возражать...

ты кстати открытие таблицы и запрос на данные не путаешь? разные вещи однако. ... на файл серверных/(аналогах открытия на сервере, курсорах к примеру) открытие не то что блоб, даже обычных данных в озу не "забьет".


 
Ega23 ©   (2012-12-21 08:50) [66]


> Спор о том что человек назвав чушью, то что блоб поля забьют
> ОЗУ при открытии таблицы в 10 млн. записей.

Я же выше привёл пример. 21 Гиг. 15.000 записей. 8 секунд. Никакого забития памяти.
Тебе для MSSQL аналогичное написать?


 
stas ©   (2012-12-21 15:57) [67]

Написал приложение для теста.
Используется база акцесса, состоящая и 1-й таблицы, в ней 2 поля, первое счетчик, второе memo

1. Загружаем в него список файлов, общим размером 223 мб
http://piccy.info/view3/3880841/37f0b9edc922795de500e923aa68efd0/orig/

2. Для чистоты эксперемента, закрываем приложение, и открываем по новой, смотрим размер занимаемой ОЗУ приложением
http://piccy.info/view3/3880863/d215a6efd932408f2fdfdb7cad2e82a1/orig/

3. Открываем базу без блоб поля, (в запросе выборка только 1-го поля - счетчика)
http://piccy.info/view3/3880871/70381f130abb10fd5ef9cd44434079cb/orig/
как видим, размер приложения особо не изменился

4. Открываем базу с блоб полем в запросе
http://piccy.info/view3/3880876/04c776576d019111a1fb6b5b42ffd5a0/orig/

и наблюдаем сколько занимает места программа в ОЗУ - 248 мб.

Кому интересно или сомневается, качаем программу с исходниками и проверяем.
http://narod.ru/disk/64673449001.95e00ed1c23e4990fc07505a255b198b/prog.rar.html


 
stas ©   (2012-12-21 15:58) [68]

*в архиве база пустая


 
Игорь Шевченко ©   (2012-12-21 16:00) [69]

stas ©   (21.12.12 15:57) [67]

Успокойся уже


 
stas ©   (2012-12-21 16:25) [70]

Игорь Шевченко ©   (21.12.12 16:00) [69]

Ну, так пора бы признать, что ваш "мастер" в [4] сказал бред и всячески пытается выкрутится.


 
Jeer ©   (2012-12-22 02:38) [71]

Удалено модератором


 
sniknik ©   (2012-12-24 08:11) [72]

> и всячески пытается выкрутится.
я даже не пытался проверить, так как у тебя, с акцесс... т.к. методы определения тобой не были раскрыты до..., фактичеси вот этого поста.

могу предположить, на скорую руку, без опять проверок, что 1 - аксесс не подходящая для этого дела база... т.к. локальная (локальными методами поведение должно исправится) . 2 - тип OLE у него нестандартный блоб, контейнер под ActivX обработка отличается от стандартной. 3 - возможно, опять из-за типа, дельфя не определяет его как блоб (т.к. старая, тип могли позже ввести) а например как длинную строку с соответствующей обработкой. 4 - ADO пытается включить поле в идентификатор записи (опять возможно из-за типа), с тем же результатом.
проверить могу позже, на работе (если работы не будет).



Страницы: 1 2 вся ветка

Текущий архив: 2013.09.08;
Скачать: CL | DM;

Наверх




Память: 0.63 MB
Время: 0.009 c
2-1356344035
oam333
2012-12-24 14:13
2013.09.08
Не получается копировать часть изображения


15-1364654871
TUser
2013-03-30 18:47
2013.09.08
Умер Леонид Мацих


1-1312869852
Troychik
2011-08-09 10:04
2013.09.08
Есть ли какие идеи? (MS Word)


1-1313145196
ForumReader
2011-08-12 14:33
2013.09.08
Передача текста функции как параметра функции. Проблема...


15-1364966140
O'ShinW
2013-04-03 09:15
2013.09.08
прехват запросов ODBC к БД (oracle)