|
su.dbms- SU.DBMS ---------------------------------------------------------------------- From : †га ў«Ґў „ҐЁб 2:5020/400 10 Jan 2002 18:44:00 To : Victor Metelitsa Subject : Re: "Пациент скорее жив или м" ертв? -------------------------------------------------------------------------------- > >так вот если размер виртуального раздела поделить на > > количество сессий выходит (на моем сервере), что на сессию уходит ~150 кб. А > > если пользователей 400, то они кушают всего 60 мб, что меня очень радует. > > > А как же память под сортировки и т.п.? > Какие сортировки в OLTP системе, к тому же индексы есть. Вообще то каждая сессия имеет 128 кб для сортировок, но если надо для DSS запроса можно выделить сколько угодно с помощью спец. механизма (PDQ), из специального пула. > DB2 под NT многонитевая, но по большому счету - какой смысл в этих > хитрых схемах? Главные-то затраты - работа с дисками, по сравнению с > этим затраты на переключение процессов исчезающе малы. _Оптимизатор > запросов_ - вот что на самом деле важно. Минимизировать обращения к дискам. Имею 3 инстанса Информикс и на всех активная часть бд влезает в буферный пул (ОЗУ), т.е. нет почти работы с дисками. > Фу. [Хранимые процедуры - зло, полноценные SQL-сервера в них не > нуждаются; причем я не вижу, чем DB2-шная, скажем, Java-процедура хуже > чьей-то там еще]. Эх есть у нас БД - чистая зведа (1 главная табл. и 22 справочника к ней), т.е. при вставке в основную табл. надо писать суррогаты из справочников, если там нет нужного то нужно вставить значение в справочник, а суррогат в основную. Вставка в эту БД очень активная, использование хранимой процедуры ускорило этот процесс >10 раз. Процедура что-то вроде этого: Таблица справочник. create table users (user_id serial primary key, username char(20)); Основная таблица (f0 из справочника) create table log(user_id int references users, url char(200)); Процедура (p0 - значение из справочника для которого необходимо найти и вставить id в основную таблицу, p1 - значение вставляемое в основную таблицу) ---------------------------------------------------------------------------- create procedure log_ins(p0 char(20), p1 char(200)) define pk int; -- задаем переменную (для хранения id из справочника) select user_id into pk From users Where username = p0; -- ищем значение id в справочнике по значению p0 и сохраняем его в pk If pk is null Then Insert into users (username) values (p0); -- если не найдено т.е. pk = null, то вставляем новую запись в --справочник Let pk = DBINFO('sqlca.sqlerrd1'); -- pk присваиваем новому serial (фишка Инфор-а) End If; insert into log (user_id,url) values (pk,p1); -- вставляем в основную таблицу end procedure;> > > поле в таблицу могу добавить в любое место простым ALTER TABLE, > А где нельзя? > Я считал что в DB2 нельзя добавить поле в табл. (рад что ошибся) -- Журавлев Денис. Отправлено через сервер Talk.Ru - http://www.talk.ru --- ifmail v.2.15dev5 * Origin: Talk.Ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms/6488f51ea59e.html, оценка из 5, голосов 10
|