|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
Приветствую всех!!! Вот недавно соорудил хранение файлов в БД. Кроме ожидаемых преимуществ, оказалось, что при закачке Blob'а полностью грузится процессор а также сама закачка идет очень медленно. Похоже это связано со способом загрузки в PB (по 32 к). Поведайте, как можно это ускорить. Или кто и как работает с blob'а ми большого размера. ЗЫ Всех с Наступившим!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2005, 10:47 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
Совсем позабыл про правила форума: PB 9, ASA 9. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2005, 10:48 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
Рекомендую еще подумать о прямой закачке файлов из самой ASA - через системную процедуру "xp_read_file". Типа того: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2005, 10:54 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
ASCRUSРекомендую еще подумать о прямой закачке файлов из самой ASA - через системную процедуру "xp_read_file". Типа того: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2005, 11:03 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2005, 11:07 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
ASCRUS Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2005, 11:24 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
Если речь идет про автоинкремент-поле, то именно способ узнавания присвоенного значения я чуть выше и указал. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2005, 11:30 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
ASCRUSЕсли речь идет про автоинкремент-поле, то именно способ узнавания присвоенного значения я чуть выше и указал.Извиняюсь, туплю а как выполнить запрос из PB? DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA; PREPARE SQLSA FROM "SELECT @@IDENTITY;"; OPEN DYNAMIC my_cursor; FETCH my_cursor INTO :ProgID; CLOSE my_cursor; Выдеат кривизну (всегда 2) . Select "@@IDENTITY" Into :ProgID; Ошибка синтаксиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2005, 12:07 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
Я сталкивался с тем что крайне медленно работает BlobMid. Чтобы не нарезать по 32k - не надо использовать встроеные FileRead/FileWrite, а подключить аналогичные функции WinAPI. У меня под рукой сейчас примера нет - если найду - закину. Возможно что в последних версиях вместо 16битных встроенные функции FileWrite/FileRead используют нормальные 32битные функции OS - т.е. лимит в 32k уже не актуален. Насколько я помню в CaseExpress был такой запрос. Кто-нть может опровергнуть/подтвердить? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2005, 13:00 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
ЗоринАндрейЯ сталкивался с тем что крайне медленно работает BlobMid. Чтобы не нарезать по 32k - не надо использовать встроеные FileRead/FileWrite, а подключить аналогичные функции WinAPI. У меня под рукой сейчас примера нет - если найду - закину. Возможно что в последних версиях вместо 16битных встроенные функции FileWrite/FileRead используют нормальные 32битные функции OS - т.е. лимит в 32k уже не актуален. Насколько я помню в CaseExpress был такой запрос. Кто-нть может опровергнуть/подтвердить?Народ, а где можно найти список функция WinAPI и их синтаксиса/применения? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2005, 13:04 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
VoDAНарод, а где можно найти список функция WinAPI и их синтаксиса/применения? MSDN разумеется :-) Поиск тоже помогает. И FAQ никто не отменял. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2005, 13:25 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
VoDA ASCRUSЕсли речь идет про автоинкремент-поле, то именно способ узнавания присвоенного значения я чуть выше и указал.Извиняюсь, туплю а как выполнить запрос из PB? .... Select "@@IDENTITY" Into :ProgID; Ошибка синтаксиса. Думаю, что Select "@@IDENTITY" Into :ProgID From Dummy; решит твою проблему :) Если конечно дело в том, что ПБ считает, что поле Фром обязано быть в запросе... Хотя - может я и не прав. Но попробовать негде - так что звиняйте, просто совет, куда посмотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2005, 13:26 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
Vadim RomanenkoДумаю, что Select "@@IDENTITY" Into :ProgID From Dummy; решит твою проблему :) Если конечно дело в том, что ПБ считает, что поле Фром обязано быть в запросе... Хотя - может я и не прав. Но попробовать негде - так что звиняйте, просто совет, куда посмотреть. Угу, для PB надо писать Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2005, 14:07 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
P.S. Кстати для таких дел курсоры писать не надо, лучше пользоваться обычным встроенным SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2005, 14:09 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
я пытаюсь открыть файл и засунуть содержимое в блоб ошибок нет но и в блобе пусто Function Integer _lopen(ref String PathName, Integer ReadWrite) Library "KERNEL32.DLL" Function Integer _lread(ref Integer FileHandl,blob Buffer,long Bytes) Library "KERNEL32.DLL" Function Integer _lclose(ref Integer FileHandl) Library "KERNEL32.DLL" int li_FileNum,li string ls blob b long flen li=0 ls='C:\TEMP\temp.wmf' flen = FileLength(ls) li_FileNum = _lopen(ls,li) IF li_FileNum <> -1 THEN _lread(li_FileNum, b,flen) END IF _lclose(li_FileNum) flen=len(b) Что я не так делаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2011, 12:59 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
DDD06...Что я не так делаю? Используйте функции РВ такие как FileReadEx, FileWriteEx, и не мучьтесь. P.S. Но возможно у Вас ещё РВ5, тогда их у Вас не будет. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2011, 14:51 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
PB у меня 8.0.1 но FileReadEx к сожалению нет ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2011, 14:53 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
DDD06я пытаюсь открыть файл и засунуть содержимое в блоб ошибок нет но и в блобе пусто Function Integer _lopen(ref String PathName, Integer ReadWrite) Library "KERNEL32.DLL" Function Integer _lread(ref Integer FileHandl,blob Buffer,long Bytes) Library "KERNEL32.DLL" Function Integer _lclose(ref Integer FileHandl) Library "KERNEL32.DLL" Что я не так делаю? Вы практически все сделали не так. 1) Integer заменить на Long 2) blob Buffer заменить на ref blob Buffer 3) буфер надо выделять нужного размера до вызова ф-и 4) ref Integer FileHandl заменить на long FileHandl ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2011, 23:42 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, тоесть так? Код: plaintext 1. 2. 3.
А как выделить буфер? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2011, 11:22 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
Все получилось! Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2011, 11:28 |
|
Кто и как работает с Blob-ами
|
|||
---|---|---|---|
#18+
DDD06Все получилось! Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Вроде все правильно. Учтите только что в PB10 и выше blob(space(flen)) выделит в 2 раза большый буфер. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2011, 16:09 |
|
|
start [/forum/topic.php?fid=15&fpage=18&tid=1335656]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 262ms |
total: | 390ms |
0 / 0 |