На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается для обсуждения вопросов использования баз данных, за исключением составления запросов на SQL. Для этого выделен специальный раздел. Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Chow, Bas, MIF
  
> oracle + аналог триггера на select
    Знатоки, здравствуйте!

    Помогите идеей. Суть проблемы. Есть таблица в бд oracle, в которой есть поле типа blob. При каждой выборке из этого поля нужно записывать в другую таблицу размер этого блоба. Другими словами - нужно собрать статистику по объему полученных из этого поля данных за определенное время (день/неделя/месяц и т.д.).

    Как бы это реализовать на стороне БД?
      Цитата estra @
      При каждой выборке из этого поля нужно записывать в другую таблицу размер этого блоба.

      А зачем? от SELECT размер не изменяется, так что достаточно записывать размер после вставки/обновления.
        В этой таблице картинок лежит на 8ТБ, их будут выносить из базы в файловое хранилище. Послу этого картинки будут передавать по шине. Суть задачи - оценить нагрузку, которая на эту шину ляжет после выноса картинок из БД.
        Есть идеи по существу вопроса?
        Сообщение отредактировано: estra -
          Так вопроса, имеющего смысл, тупо нет... получайте свой блоб из хранимой процедуры, а в ней - не только получение блоба из таблицы, но и запись его размера куда там надо... или в запросе получать блоб не прямо, а функцией - а функции получить блоб и записать куда надо его размер.

          Самая простая реализация, не требующая изменений в клиентском коде - это создание вместо таблицы представления, которое собственно всё нужное (вызов функции) и организует. Правда, придётся немножко покорячиться при наличии триггеров и внешних ключей - таблицу-то придётся переименовывать.
            >Так вопроса, имеющего смысл, тупо нет...
            Тупо есть. Есть клиент с нехилым количеством форм, которые дергают данные из этой таблицы. И переписывать все это на вызов процедуры никто не будет. Хотелось бы найти решение, не требующее правки кода на клиенте...

            Можете привести пример вьюшки, которая организует вызов функции?
              Перенеси тавлицу и ее индексы на отдельный диск. Запусти какую-нибудь утилиту, мониторющую io.

              И чтоб два раза не вставать: ты сам себе противоречишь в двух стейтментах - что никто не будет ради этого изменения перелопачивать весь код и что картинки будут храниться в хранилище другого типа.
                Цитата estra @
                Можете привести пример вьюшки, которая организует вызов функции?

                Ну если очень схематично, то типа
                ExpandedWrap disabled
                  CREATE VIEW old_table_name
                  AS
                  SELECT id, {other columns}, get_blob_size(blob_comn)
                  FROM new_table_name

                и соответственно
                ExpandedWrap disabled
                  CREATE FUNCTION get_blob_size(blob_comn BLOB)
                  RETURNS BLOB
                  AS
                  BEGIN
                      INSERT INTO debug_table (blob_size) VALUES (LENGTH(blob_column));
                      RETURN blob_column;
                  END
                  >MIF
                  Я не противоречу, я просто не упоминал о деталях, не относящихся к сути вопроса. Ни кто не будет этого делать не данном этапе. Сейчас задача собрать статистеку, на эту задачу выделено 5 дней времени и 1 человек. После выноса картинок из БД на рефакторинг кода клиентсого приложения будут выделены отдельные, более серьезные, ресурсы.

                  >Akina
                  Спасибо, годная идея, попробую ею воспользоваться.
                  1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0224 ]   [ 14 queries used ]   [ Generated: 20.06.21, 21:13 GMT ]