Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.09.07;
Скачать: [xml.tar.bz2];

Вниз

увеличение времени исполнения запросов к БД   Найти похожие ветки 

 
ply ©   (2008-07-13 02:50) [0]

есть список сотрудников
вот OnShow формы для редактирования данных сотрудника:
if employee_id="0" then //новый сотрудник
     begin
       query.AddWhere("0");
       query.Active:=true;
       query.Append;
     end
   else //вставляем данные о сотруднике
     begin
       query.AddWhere("employee_id="+employee_id);
       query.Active:=true;
       if query.eof then exit;
     
       query.edit;
     end;

изменяю данные и сохраняю...
query.Post

Проблемы начались когда добавил поле с фотографией сотрудника.
После сохранения\\изменения сотрудника с добавлением фотографии скорость работы программы увеличивается: После каждой добавленной фотографии форма для редактирования сотрудников открывается в среднем на 250мс дольше.
Если фотографий не добвлять то время открытия формы не изменяется.

Как это исправить?


 
ply ©   (2008-07-13 02:52) [1]

опечатался. скорость работы не увеличивается а уменьшается.


 
ply ©   (2008-07-13 03:04) [2]

блин. опять опечатался=) уменьшается скорость


 
Германн ©   (2008-07-13 03:19) [3]


>
> Проблемы начались когда добавил поле с фотографией сотрудника.
>
> После сохранения\\изменения сотрудника с добавлением фотографии
> скорость работы программы увеличивается: После каждой добавленной
> фотографии форма для редактирования сотрудников открывается
> в среднем на 250мс дольше.
> Если фотографий не добвлять то время открытия формы не изменяется.
>
>
> Как это исправить?
>

Удалить поле с фотографией. :)


 
ply ©   (2008-07-13 03:20) [4]

не пойдет. без него никак


 
ply ©   (2008-07-13 15:20) [5]

решил проблему. у меня был включен sqlmonitor про который я забыл и который писал все запросы в memo


 
Нат   (2008-07-25 05:39) [6]

По любому, хранить изображение в БД - дурной тон.
Храните в БД пути к фото.


 
Johnmen ©   (2008-07-25 08:50) [7]


> По любому, хранить изображение в БД - дурной тон.

Что за религия?


 
Palladin ©   (2008-07-25 08:51) [8]

Это секта :) "Меганенавистники BLOB полей"


 
Сергей М. ©   (2008-07-25 09:40) [9]


> ply ©   (13.07.08 02:50)


Обработчик OnShow - крайне неподходящее место для такого рода затей.


 
Ega23 ©   (2008-07-25 09:44) [10]


> По любому, хранить изображение в БД - дурной тон.


Бугага.  :))))))


> Это секта :) "Меганенавистники BLOB полей"


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


 
stas ©   (2008-07-25 09:54) [11]

Нат   (25.07.08 05:39) [6]
не прикалуйся.

ply ©   (13.07.08 02:50)  
Фотку не включай в этот запрос, а выводи ее через MasterDetail


 
Ega23 ©   (2008-07-25 09:56) [12]


> Фотку не включай в этот запрос, а выводи ее через MasterDetail


Ага, сделай вместо одного - 2 запроса.
Думай что советуешь-то.


 
stas ©   (2008-07-25 10:00) [13]

Ega23 ©   (25.07.08 09:56) [12]
ну,  если его запрос возвращает всегда 1 запись тогда ненужно masterdetail.


 
Ega23 ©   (2008-07-25 10:00) [14]


> ну,  если его запрос возвращает всегда 1 запись тогда ненужно
> masterdetail.


Естественно. Ты на код в [0] смотрел?


 
stas ©   (2008-07-25 10:09) [15]

Да, только не ясно что такое query.AddWhere("0");
вобще что за метод такой?


 
Ega23 ©   (2008-07-25 10:12) [16]


> Да, только не ясно что такое query.AddWhere("0");
> вобще что за метод такой?


Судя по всему у него какой-то хитрый DAC. Ну а с методом - всё ясно, в "where" что-то добавляет.
Полезный метод, кстати.


 
stas ©   (2008-07-25 10:18) [17]

Ega23 ©   (25.07.08 10:12) [16]
Ну, так query.AddWhere("0") это может быть вобще исключение условия отбора.


 
stas ©   (2008-07-25 10:22) [18]

Хотя в любом случае согласен masterdetail здесь ненужен.


 
Anatoly Podgoretsky ©   (2008-07-25 14:27) [19]


> Нат   (25.07.08 05:39) [6]

Теперь передай изображение на клиента, никаких общих папок на сервере нет.


 
Нат   (2008-07-26 02:50) [20]


> Бугага.  :))))))

Это сильный аргумент. :-)

Передача записи с картинкой по сети заметно медленнее, чем без картинки.
И размер картинки может быть 10к, а может и 10Мб.
И не каждый раз пользователю они нужны.
У себя сперва держали вместе, потом разделили на два запроса, потом вообще вынесли наружу.
В общем, вопрос актуальный.

> Теперь передай изображение на клиента, никаких общих папок на сервере нет.

В смысле где хранить? Аргумент... если такое условие...
У себя планировал создать подобную папку с доступном для проги-сервера.

Может ли иметь смысл, с точки зрения обработки прочих полей, создание отдельной таблицы под изображения?


 
Ega23 ©   (2008-07-26 13:11) [21]


> Может ли иметь смысл, с точки зрения обработки прочих полей,
>  создание отдельной таблицы под изображения?


Сильно зависит от СУБД. В серьёзных - создание отдельной таблицы бессмысленно.


> Это сильный аргумент. :-)


Гораздо более сильный аргумент был про "плохой тон". 9 лет занимаюсь разработкой БД и только сейчас узнаю, что всё что я делаю - плохой тон. И не только я один.
Согласись, это натуральная бугага.


> Передача записи с картинкой по сети заметно медленнее, чем
> без картинки.


А нефиг запросы select * from table гонять. Вот это-то и есть самый настоящий "плохой тон".


> В смысле где хранить? Аргумент... если такое условие...


Есть мнение, что вы серьёзными системами не занимались. Где достаточно сильный упор на безопасность делается. И за "шареный ресурс" на сервере БД у вас систему тупо не купят. Купят у конкурентов, где всё нормально.


 
Нат   (2008-07-28 07:18) [22]

Есть много разных мнений.
А хуже всего - бывают правы все.
Сколько сторон у монеты... а у шара?


 
Ega23 ©   (2008-07-28 09:51) [23]


> А хуже всего - бывают правы все.


Могу предложить тебе завести тему "Хранение BLOB в базе - плохой тон" на, например, sql.ru
Узнаешь много нового.


 
Anatoly Podgoretsky ©   (2008-07-28 10:28) [24]

> Ega23  (28.07.2008 9:51:23)  [23]

> Узнаешь много нового.

При том не только о хранение.


 
Игорь Шевченко ©   (2008-07-28 12:16) [25]


> Есть много разных мнений.


Всего два


 
MsGuns ©   (2008-07-28 12:35) [26]

Фотки в основной запрос (который отображается в сетке) не включать вообще, а добавить кнопку "Показать фото", по которолй извлекать фото по ид текущей записи.

ЗЫ. Не надо путать технологию хранения данных (блобы в БД) со способами их отображения (тягания всех блобов на клиента без возможности (и необходимости) сразу их все показывать)


 
stas ©   (2008-07-28 13:10) [27]

Нат   (28.07.08 07:18) [22]
Может быть и есть случаи, когда в БД хранить фотки не целесообразно, но их на столько мало(я невстречал) что плохим тоном можно считать хранение фоток не в БД. И на это есть очень много аргументов.

ply ©   (13.07.08 02:50)  
Вставку лучше сделать запросом на INSERT, к стати что за СУБД ?


 
Нат   (2008-07-28 17:36) [28]


> добавить кнопку "Показать фото"

Так и делаем


 
Нат   (2008-07-28 17:50) [29]

Забавно, первое, что попалось и конечный результат:
http://sql.ru/forum/actualthread.aspx?bid=6&tid=578237


 
Ega23 ©   (2008-07-28 17:58) [30]


> Забавно, первое, что попалось и конечный результат:


В [10] как раз этот случай описан. И это, пожалуй, единственный случай, когда имеет смысл картинки хранить вне базы.


 
Нат   (2008-07-28 18:06) [31]

На sql.ru совершенно спокойное отношение к обоим вариантам.


 
Ega23 ©   (2008-07-28 18:11) [32]


> На sql.ru совершенно спокойное отношение к обоим вариантам.


Заведи ветку и спроси все плюсы и минусы данного подхода (хранение в базе ссылок на файлы).
Если здесь тебя масса людей не убедила, может там убедят.


 
Медвежонок Пятачок ©   (2008-07-28 18:16) [33]

Передача записи с картинкой по сети заметно медленнее, чем без картинки.
И размер картинки может быть 10к, а может и 10Мб.
И не каждый раз пользователю они нужны.


Эт точно. Если картинка не в блобе, то она не по сети тянется, а по эфирным волнам.


 
Нат   (2008-07-28 19:27) [34]


> масса людей не убедила

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


 
stas ©   (2008-07-28 22:20) [35]

Нат   (28.07.08 19:27) [34]
Какая разница где мусор будет? в папке или в базе?


 
Нат   (2008-07-28 22:45) [36]

Разница для меня: скорость работы, размеры БД, скорость и размеры бэкапов.
Проще работа с картинкам, стандартный софт, грузит сервер БД.
Чуть меньше усилий по уборке мусора в БД.


 
Нат   (2008-07-29 00:05) [37]

оп.. читать ".. не грузит сервер.."
А вообще, конечно, мусор - еща та тема...


 
Нат   (2008-07-29 00:08) [38]

Прошу прощения, за опечатки.
Полезная привычка делать сейвы, в данном случае подводит.
:-(


 
Ega23 ©   (2008-07-29 09:26) [39]


> скорость работы


Не изменяется. Ну разве только у парадокса...  :)


> размеры БД


Какая разница? БД с картинками, или и БД и картинки?


> скорость и размеры бэкапов.


А картинки в бэкап класть не надо????

На самом деле налицо непонимание того, каким образом хранится в таблице BLOB.


 
Sergey13 ©   (2008-07-29 09:35) [40]

Разница в БД-шном хранении картинок и ВНЕ-БД-шном одна, ИМХО, - кто отвечает за целостность данных - СУБД или файловая система. Обычно права проще нарулить в СУБД, ИМХО опять же. Плюс там все равно права надо наруливать на другие поля/записи/таблицы. А рулить в двух местах всяко сложнее.

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



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

Форум: "Начинающим";
Текущий архив: 2008.09.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.005 c
2-1217418829
a.a.j.
2008-07-30 15:53
2008.09.07
Расширенный DBGrid


2-1217251593
alex-drob
2008-07-28 17:26
2008.09.07
Выборка из таблицы по дате


2-1217182944
lavgirls
2008-07-27 22:22
2008.09.07
почему в консольном приложении русские буквы выводятся абракадабр


2-1217323851
ifrau
2008-07-29 13:30
2008.09.07
О правильном коде


2-1217058832
AlexanderMS
2008-07-26 11:53
2008.09.07
Проект без VCL требует SysUtils, хотя он нигде не указан...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский