Текущий архив: 2013.09.08;
Скачать: CL | DM;
Вниз
выборка Найти похожие ветки
← →
sqler (2012-12-19 12:16) [0]для таблицы на 10 млн записей, что будет быстрее: три SELECT-запроса (SELECT..FROM..WHERE) или 1 SELECT запрос (SELECT * FROM table) и перебор полученного рекордсета?
← →
Медвежонок Пятачок © (2012-12-19 12:38) [1]перебор будет в обоих случаях.
так что ответ зависит от того, сколько будет записей в трех вхере.
если меньше десяти лимонов, то три вхере быстрее
← →
stas © (2012-12-19 12:41) [2]если у вас в table есть блоб поля по 100 мб, то при выборке 10 миллионов записей на клиенте будет забито ОЗУ, следовательно это будет медленее.
если ОЗУ на клиенте сможет принять весь набор, то будет быстрее.
Но опять же в чем заключается задача? какая СУБД? Возможно правильнее выдергивать по 10 тыс. записей и обрабатывать их, таким образом первая обработанная запись появится быстрее чем дождаться получения всех 10 млн, а потом начать обрабатывать. Возможно сделать это в несколько потоков...
← →
Ega23 © (2012-12-19 13:01) [3]
> если ОЗУ на клиенте сможет принять весь набор, то будет
> быстрее.
Да щаз. Время на передачу данных не тратится, да?
← →
sniknik © (2012-12-19 13:02) [4]> если у вас в table есть блоб поля по 100 мб, то при выборке 10 миллионов записей на клиенте будет забито ОЗУ, следовательно это будет медленее.
чушь. блоб поля обрабатываются иначе. любой размер будет представлен "ссылкой" в пару тройку байт (хз. на конкретное значение).
> если ОЗУ на клиенте сможет принять весь набор, то будет быстрее.
еще одна чушь. перебор на клиенте всегда перебор (если не создать индекс, чего по дефаулту нет), а серверная выборка пользуется индексами и обычно они на нужные для выборок условия есть.
> Возможно сделать это в несколько потоков...
лучше бы многозначительно промолчал... кроме ахинеи разной и не сказал ничего.
← →
sqler (2012-12-19 13:09) [5]СУБД DBISAM (встраиваемая)
бд - локальная копия бд интернет-магазина, блоб полей в таблицах нет
← →
stas © (2012-12-19 13:09) [6]sniknik © (19.12.12 13:02) [4]
1. Блоб закачивается на клиента полностью
2. Затраты времени на обработку условия Where (тем более на 10 млн. записей) могут превышать передачу +данных и перебор на клиенте.
← →
Медвежонок Пятачок © (2012-12-19 13:12) [7]а в военное время where может и вообще не работать.
так что никаких sql, а только TTable
← →
Кщд (2012-12-19 14:05) [8]не наблюдая запроса,
не видя структуры таблицы,
не зная о наличии/отсутствии индексов и их селективности
рассуждать об эффективности запроса можно так же долго, как и бестолково)
>stas © (19.12.12 13:09) [6]
>1. Блоб закачивается на клиента полностью
правильно понимаю, что запрос: select film_blob_field from my_blueray_films where id = 726, - заполонит ОЗУ, например, 20Гб отборного порно в blueray-качестве?)
← →
Плохиш © (2012-12-19 14:21) [9]
> stas © (19.12.12 13:09) [6]
> sniknik © (19.12.12 13:02) [4]
> 1. Блоб закачивается на клиента полностью
Афигеть. Ты только разработчикам баз данных об этом не говори.
← →
stas © (2012-12-19 14:41) [10]select film_blob_field from my_blueray_films where id = 726
заполнит столько чему равен размер содержимого film_blob_field для id=726
а если так SELECT * FROM table (как в теме), то затянет все...
← →
Кщд (2012-12-19 14:51) [11]>stas © (19.12.12 14:41) [10]
понял, спасибо
вопросов больше не имею)
← →
sniknik © (2012-12-19 15:06) [12]О сколько нам открытий чудных. Готовит просвещенья дух.
← →
stas © (2012-12-19 15:36) [13]sniknik ©
Имея значек мастера и делая такие громкие заявления (чушь. блоб поля обрабатываются иначе. любой размер будет представлен "ссылкой" в пару тройку байт), чем вводите разработчиков в заблуждение,
потрудитесь уж привести основания, а также СУБД, способы связи, настройки полей для которых актуально ваше заявление...
А не выкрикивайте, как двоечник с места )
← →
stas © (2012-12-19 16:00) [14]Ega23 © (19.12.12 13:01) [3]
> Время на передачу данных не тратится, да?
На перекачку тратится ровно как 10 миллионов закачать за 1 раз, так и за 3 раза.
А вот на обработку where тратится еще дополнительное время. т.е. 1 выборка 10 млн. записей быстрее чем 3 выборки такого же кол-ва записей в сумме, даже при наличии индексов и т.д.
А вот чтобы сказать что правильнее надо знать задачу.
← →
Медвежонок Пятачок © (2012-12-19 16:03) [15]т.е. 1 выборка 10 млн. записей быстрее чем 3 выборки такого же кол-ва записей в сумме, даже при наличии индексов и т.д.
Остается только придумать зачем автору три where если он в результате их получает всю таблицу.
← →
stas © (2012-12-19 16:08) [16]sqler (19.12.12 12:16)
Или Вам надо найти всего 3 записи из 10 миллионов и вы спрашиваете как это лучше сделать забрать на клиента и искать там или на сервере условием Where ?
← →
Медвежонок Пятачок © (2012-12-19 16:14) [17]нет, йошкин кот.
от тремя where выбирает три трети таблицы.
просто чтобы не скучно было.
← →
sniknik © (2012-12-19 16:15) [18]> настройки полей
какие такие настройки? у чего? само слово "blob" означает "бесформенное" т.е. практически нарицательное имя всех не структурных объектов в базе (Memo, Text, OLE, Image, Graphic, Table ... ets.), в общем тех с которыми трудно/иногда невозможно работать структурными методами ("впихнуть в сетку рекордсета" если такая есть конечно).
> потрудитесь уж привести основания
я их привожу, обычно, на такие же с основанием сообщения, а не голословные "ляпы".
> для которых актуально ваше заявление...
для всех... практически для всех. BDE с парадоксом надеюсь считать не будем, да и там сомнительно... ну вернее там механизм запроса другой, с сохранением в файл/возможностью сделать результат перманентным... там... ну чем черт не шутит, возможно, но тормошить "мертвяка" проверками уже лет 7..ххх (уже забл сколько) как не охота.
> А не выкрикивайте, как двоечник с места )
не изображай из себя учителя... хочешь конкретики говори конкретно, а не как в [2] "обо всем".
← →
Inovet © (2012-12-19 16:16) [19]> [13] stas © (19.12.12 15:36)
> потрудитесь уж привести основания, а также СУБД, способы
> связи, настройки полей для которых актуально ваше заявление...
Может и ты приведёшь всё это для этого же условия актуальности?
← →
stas © (2012-12-19 16:41) [20]sniknik © (19.12.12 16:15) [18]
т.е. Если Напишем небольшое приложение.
возьмем D7, TADODataSet, подключим к MSSQL 2005, впишем запрос в DataSet, типа SELECT TOP 10 IDFIELD, BlobField FROM Table. Не подключая контролов. Запустим приложение. Откроем в нем датасет. То мы не должны получить большой прирост используемой ОЗУ приложением?
Я перечислил все то, на чем могу проверить, это вроде и не старье и много народу использует эту связку.
Inovet © (19.12.12 16:16) [19]
Ну, обычно если кого-то обвиняют, то приводят основания, а не наоборот.
Мне некогда искать могу сделать только вышеописаный пример.
← →
Ega23 © (2012-12-19 17:26) [21]
> 1. Блоб закачивается на клиента полностью
Да щаз.
← →
Inovet © (2012-12-19 17:33) [22]> [20] stas © (19.12.12 16:41)
> могу сделать только вышеописаный пример
А ты сделай.
← →
Ega23 © (2012-12-19 17:33) [23]
> т.е. Если Напишем небольшое приложение.
> возьмем D7, TADODataSet, подключим к MSSQL 2005, впишем
> запрос в DataSet, типа SELECT TOP 10 IDFIELD, BlobField
> FROM Table. Не подключая контролов. Запустим приложение.
> Откроем в нем датасет. То мы не должны получить большой
> прирост используемой ОЗУ приложением?
А если мы возьмём IBSQL, то вот незадача, будем каждый блоб по факту получать.
← →
Jeer © (2012-12-19 18:13) [24]У ТС СУБД DBISAM - их две разновидности ( К/С и Ф/С ).
Но даже если Ф/С, то блобы на клиент вытягиваются тоже только по факту обращения к конкретному.
← →
Jeer © (2012-12-19 18:23) [25]P.S.
При условии, что ТС не закачивает их в массив стримов :)
← →
stas © (2012-12-19 18:31) [26]Ega23 © (19.12.12 17:33) [23]
Ну, так не зная СУБД зачем утверждать что каждый блоб по факту (СУБД была озвучена позже)?
Защитив себя от ненужной загрузки блоба, это не будет проблемой ни в IBSQL ни в MSSQL.
А грузить блобы в селекте и надеяться на то что будет закачана только ссылка с сервера, то проблемы могут возникнуть.
К стати в оракле, зависит от компонентов доступа на сколько я знаю.
← →
stas © (2012-12-19 18:33) [27]Inovet © (19.12.12 17:33) [22]
Сделал. Загружает содержимое блобов.
← →
Ega23 © (2012-12-19 18:47) [28]
> К стати в оракле, зависит от компонентов доступа на сколько
> я знаю.
Кстати, везде от от компонентов доступа зависит. Если что. Посему безапелляционно утверждать
> stas © (19.12.12 13:09) [6]
>
> 1. Блоб закачивается на клиента полностью
это не комильфо.
Равно как и миллионную выборку на клиента тянуть ,сервер для этого и предназначен, с его индексами, шахматами и поэтессами, чтобы данные фильтровать.
← →
Игорь Шевченко © (2012-12-19 20:59) [29]
> для таблицы на 10 млн записей, что будет быстрее
без разницы
← →
stas © (2012-12-19 21:08) [30]
> Равно как и миллионную выборку на клиента тянуть
Ну, если цель найти всего 3 записи, то конечно нет смысла тянуть 10 млн. на клиента.
Я изначально решил что он хочет за 3 раза вытянуть те же 10 млн.
← →
sniknik © (2012-12-20 07:55) [31]stas © (19.12.12 18:33) [27]
> Inovet © (19.12.12 17:33) [22]
> Сделал. Загружает содержимое блобов.
опять бездоказательное/не проверяемое заявление в "фирменном" стиле? ну не обижайся тогда, на аналогичное же "выкрикивание с места"
- ты врешь!
конечно, при соблюдении описанных тобой же условий (отсутствия компонента типа DBImage, и 1 записи в результате, потому что даже так выкачается только то что отображается)
← →
stas © (2012-12-20 10:14) [32]
отсутствия компонента типа DBImage, и 1 записи в результате
котролов нет.
а по поводу 1-й записи не понял.
← →
sniknik © (2012-12-20 10:58) [33]> котролов нет.
= ты врешь.
> а по поводу 1-й записи не понял.
контрол, если это не грид, "выкачает" только 1 запись за раз, пока не перейдешь на следующую... поэтому при одной записи "методы определения загрузки блобов" могут "страдать неопределенностью".
в гриде, если это какой нибудь "ex..." тоже практикуется "неведомая для прогера докачка" чтобы отобразить рисунки/мемо поля в ячейках, но там тоже нет докачки для не отображаемых... т.е. ситуация таже, что с дбимеджем но распространяется не на 1, а на "гридвидимое" количество записей.
← →
Inovet © (2012-12-20 11:42) [34]> [27] stas © (19.12.12 18:33)
> Сделал. Загружает содержимое блобов.
И где ты видишь их содержимое? Или, как советовали, десяток записей с блобами по 20 ГБ немецкого кино в блю-рей качестве загрузил в 4 ГБ памяти и она кончилась?
← →
Ega23 © (2012-12-20 12:09) [35]Сделай просто. Засунь в базу блоб на 100 метров.
Выбери его 10 раз:select blob from table union all select blob from table ... select blob from table
А на клиенте сделай простую вещь:with TADODataSet.Cerate(nil) do
try
Connection := ..;
CommandText := ...;
Open;
while not Eof do Next;
finally
Free;
end;
И посмотри расход памяти.
← →
stas © (2012-12-20 12:22) [36]Inovet © (20.12.12 11:42) [34]
У меня есть таблица с блоб полями, сделал open и посмотрел в диспетчере задач расход памяти, потом исключил поле из запроса и сделал тоже самое.
даже без этого:while not Eof do Next;
← →
stas © (2012-12-20 12:25) [37]Inovet © (20.12.12 11:42) [34]
это даже заметно, по скорости открытия DataSet.
← →
sniknik © (2012-12-20 12:32) [38]> Выбери его 10 раз:
> select blob from table
не не не Девид Блейн у тебя неправильная уличная магия ... блоб без "индексного" поля? а по чему тогда выборка будет "идентифицироваться"?
обязательно нужно ключевое поле (или "назначенное" на его роль). в одиночном варианте возможно идет попытка установить блоб как идентификатор.
← →
stas © (2012-12-20 12:33) [39]sniknik © (20.12.12 12:32) [38]
без разницы.
← →
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.69 MB
Время: 0.008 c