powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Требуется опытный наставник
25 сообщений из 59, страница 1 из 3
Требуется опытный наставник
    #38101986
sergey do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня всем! У меня иммется немного свободного времени которое я хочу потратить на написание клиент серверного приложения . Необходима помощь профессионалов советами. Знания языков у меня кое какое имеется . Есть желающие помочь ? с меня пивас :)


1) сделал сервер для тестирования который постоянно доступен (поставил fb2,5 и oracle11gr2 ) (fb и oracle порты по умолчанию) (при необходимости вышлю все пароли и т.д)
2) 1 - е что планирую сделать сравнить субд в плане производительности . Для фб написал клиента для тестирования , для оракла делаю в данный момент(точно такого же) как будет готого , выложу всё . Пока вопросы не возникают но дальше я уверен появятся.
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102024
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
выкладывай сюда, наставника не обещаю, а обоср..ать подход тут всегда рады
делать "точно такого же" под оракл - плохая идея, каждая субд имеет свои особенности и навороты (особенности FB местами ни в какие ворота например не лезут). если код работает одинаково везде, значит он везде работает хренового.
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102080
sergey do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
выкладываю клиента fb в архиве 2 файла http://files.mail.ru/US2QV8 (БОЛЬШАЯ ПРОСЬБА СУБД КОНЧ..ТЬ)
1- стартер
2- сам клиент
размещение должно быть d:\ais\
в базу уже добавлено 1000 пользователей . пробовал запускать с 6 компов в офисе в общей сложности 250-300 клиентов одновременно . время инсерта не превышало 11 сек(это когда подвисало , так в среднем до 1 сек) .

вот что делает клиент
while ok=false do
begin
Form1.Update;
t:=Now;
Form1.Update;
Application.ProcessMessages;
dm.tr1.StartTransaction;
Randomize;
dm.qu1.SQL.Clear;
dm.qu1.SQL.Add('insert into customer(firstname,lastname,address1,city,country,region,');
dm.qu1.SQL.Add('CREDITCARDTYPE,CREDITCARD,CREDITCARDEXPIRATION,username,passwd) values ');
dm.qu1.SQL.Add('(''serg'',''ivanov'',''anywhere'',''ttau'',''kz'',2,2,''12'',''324'',:user,''SERG1'')');
dm.qu1.ParamByName('user').Value:=ParamStr(1)+'___'+ParamStr(2)+IntToStr(RandomRange(1000000,999999999));
dm.qu1.ExecQuery;
dm.tr1.Commit;
Memo1.Lines.Add('время выполнения инсерт='+TimeToStr(Now-t));
Form1.Update;
Application.ProcessMessages;
//--------------------------------------------
t:=Now;
dm.tr2.StartTransaction;
dm.qu2.SQL.Clear;
dm.qu2.SQL.Add('select * from customer c where c.id=(select max(id) from customer)');
dm.qu2.ExecQuery;
dm.tr2.Commit;
Memo1.Lines.Add('время выполнения select='+TimeToStr(Now-t));
Form1.Update;
Application.ProcessMessages;


end;
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102090
sergey do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тестовый сервер подключен к сети туда\сюда ~ 800 кбит
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102102
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey do
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
while ok=false do
begin
    Form1.Update;
    t:=Now;
    Form1.Update;
    Application.ProcessMessages;
     dm.tr1.StartTransaction; 
    <...>
    dm.qu1.ExecQuery;
     dm.tr1.Commit; 
    Memo1.Lines.Add('время выполнения инсерт='+TimeToStr(Now-t));
    Form1.Update;
    Application.ProcessMessages;
    //--------------------------------------------
    t:=Now;
    <...>
    dm.qu2.SQL.Add(' select * from customer c where c.id=(select max(id) from customer) ');
    <...>
    Memo1.Lines.Add('время выполнения select='+TimeToStr(Now-t));
    <...>
end;
Правильно ли я понял, что:
1) на каждой итерации цикла вы стартуете транзакцию, в которой делаете только лишь 1 инсерт, и тут же её фиксируете;
2) на каждой итерации цикла вы делаете селект за "последним добавленным" покупателем, причём по полю customer.id у вас *нет* убывающего индекса ?
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102104
sergey do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все правильно , и так происходит на каждом клиенте .
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102110
sergey do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на данном этапе вопрос в том насколько быстрее будет оракл . либо будет достаточно фб.

вопрос :запуская клиетов с 6 машин(пусть по 50) у меня по сути быстродействие проверяется 6-ю клиентами т.к процессор последовательно выполняет команды для разных приложений или нет?
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102111
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey doвсе правильно , и так происходит на каждом клиенте .
А опытный наставник, значит, тебе нужен чтобы вслух читать букварь. Ню-ню... Так как
пишешь ты, писать нельзя. Ни для FB, ни для Oracle. Это код для настольного DBF-движка.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102114
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey doна данном этапе вопрос в том насколько быстрее будет оракл

Намного быстрее будет Оракул, так что про ФБ забудь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102116
sergey do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, для того в каком напправлении и какой букварь читать , если бы все были такими умными ,вопросы бы никто тут не задавал. Я не навязываюсь.
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102118
sergey do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопрос :запуская клиетов с 6 машин(пусть по 50) у меня по сути быстродействие проверяется 6-ю клиентами т.к процессор последовательно выполняет команды для разных приложений или нет?
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102119
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey doвсе правильно , и так происходит на каждом клиенте .Тогда этот тест мало связан с реальностью. Большинство транзакций (в OLTP-системах) модифицируют десятки или сотни строк, иногда - тысячи. Причём, не только добавляют, но и делают update / delete тоже. И не одной таблицы, а хотя бы трёх-четырёх. Я когда-то забавлялся этим. Пусть там и коряво всё, на таки посмотрите, пригодится м.б.

Далее. Чтобы быстро получить в ФБ значение последней записи (при поиске в порядке возрастания некоторого ключа - id, даты и проч.), надо создать по этому же ключу УБЫВАЮЩИЙ (descend) индекс. Иначе сравнение с другими СУБД, где для поиска в любом направлении (asc / desc) используется один индекс, будет некорректным.
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102127
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тест кривой. Нафига на каждом шаге цикла очищать текст запроса, а затем добавлять его заново? Тем более, что запрос параметризирован. Да и про тразакции Таблоид уже сказал.
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102140
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey doдля того в каком напправлении и какой букварь читать

Раз пишешь на дельфи, читай штатный Database Application Development Guide.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102170
sergey do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ок тест усложню добавлю в теле одной транзакции инсерт апдей делит к разным таблицам.

вопрос :запуская клиетов с 6 машин(пусть по 50) у меня по сути быстродействие проверяется 6-ю клиентами т.к процессор последовательно выполняет команды для разных приложений или нет?
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102186
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey doвопрос :запуская клиетов с 6 машин(пусть по 50) у меня по сути быстродействие проверяется 6-ю клиентами т.к процессор последовательно выполняет команды для разных приложений или нет?Если на сервере несколько ядер, то ФБ в режиме Classic Server'a будет работать на каждом из них (там каждый коннект отображается в отдельный процесс с именем fb_inet_server; рассаживанием их по ядрам занимается операционка). В режиме SuperClassic'a коннекты ( работающие в данный момент) отображаются на потоки внутри одного процесса (его имя в линухе: fb_smp_server; в виндузе - такое же как для CS, т.е. fb_inet_server). Этот процесс будет вертеться только на одном ядре, к сож-ю.
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102251
sergey do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблоидsergey doвопрос :запуская клиетов с 6 машин(пусть по 50) у меня по сути быстродействие проверяется 6-ю клиентами т.к процессор последовательно выполняет команды для разных приложений или нет?Если на сервере несколько ядер, то ФБ в режиме Classic Server'a будет работать на каждом из них (там каждый коннект отображается в отдельный процесс с именем fb_inet_server; рассаживанием их по ядрам занимается операционка). В режиме SuperClassic'a коннекты ( работающие в данный момент) отображаются на потоки внутри одного процесса (его имя в линухе: fb_smp_server; в виндузе - такое же как для CS, т.е. fb_inet_server). Этот процесс будет вертеться только на одном ядре, к сож-ю.

Таблойд , я не корректно задал вопрос , он немного проще. На стороне клиента я запускаю к примеру 50 экземпляров одного и того же приложения под разными для базы фб пользователями , приложения коннектится к базе и выполняют инсерт и селект.они будут выполняться паралельно или последовательно со стороны клиента (это тоже самое если бы я запустил по 1 экземпляру приложения на 50 разных машинах)?
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102274
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey doони будут выполняться паралельно или последовательно со стороны клиента (это тоже самое если бы я запустил по 1 экземпляру приложения на 50 разных машинах)?Если окно_1 вызвало некий "тяжелый селект", то весьма вероятно, что до того как оно получит все строки выборки, виндуза переключит процессор на окно_2. Ибо работает вытесняющая многозадачность.
И хотя процессор на вашей машине всего один, для сервера всё будет так, как будто его дёргают несколько разных коннектов. Пока он выполняет выборку для окна_1, придёт новый запрос от окна_2, затем от окна_3 и т.д.
Но у вас вместо "тяжелых селектов" - какие-то микроскопические нагрузки в виде одиночных инсертов.
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102366
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидВ режиме SuperClassic'a .... Этот процесс будет вертеться только на одном ядре, к сож-ю.Уверен ?
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102368
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey doНа стороне клиента я запускаю к примеру 50 экземпляров одного и того же приложения под разными для базы фб пользователями , приложения коннектится к базе и выполняют инсерт и селект.они будут выполняться паралельно или последовательно со стороны клиентаПараллельно.
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102425
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladТаблоидВ режиме SuperClassic'a .... Этот процесс будет вертеться только на одном ядре, к сож-ю.Уверен ?Пардон, соврамши я. Действительно по разным ядрам раскладывается... :-)
Запустил известный тебе idx_test, 200 окон. Вижу в top'e вот это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
top - 22:52:54 up 12 days,  4:32,  2 users,  load average: 0.01, 0.01, 0.00
Tasks: 318 total,   1 running, 317 sleeping,   0 stopped,   0 zombie
Cpu0  : 20.9%us, 75.1%sy,  0.0%ni,  4.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  : 22.6%us, 72.6%sy,  0.0%ni,  4.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  : 18.0%us, 76.5%sy,  0.0%ni,  5.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  : 20.5%us, 73.0%sy,  0.0%ni,  6.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu4  : 20.4%us, 72.4%sy,  0.0%ni,  7.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  : 20.8%us, 71.3%sy,  0.0%ni,  7.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  : 20.3%us, 72.1%sy,  0.0%ni,  7.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  : 18.7%us, 72.8%sy,  0.0%ni,  8.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu8  : 19.0%us, 71.8%sy,  0.0%ni,  9.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu9  : 20.7%us, 69.5%sy,  0.0%ni,  9.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu10 : 19.0%us, 70.5%sy,  0.0%ni, 10.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu11 : 18.4%us, 70.3%sy,  0.0%ni, 11.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16321244k total,  2157112k used, 14164132k free,   196804k buffers
Swap: 16383992k total,        0k used, 16383992k free,   753976k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 2133 firebird  20   0 8220m 720m 139m S 1110.1  4.5  41:43.81 fb_smp_server

Ну, и разблюдовка по потокам и ядрам (см столб 'PSR' - это номер ядра, которое работает с соотв-щим LWP):
Код: plaintext
1.
2.
3.
4.
5.
6.
-bash-4.1$ ps -FLC fb_smp_server|head -5
UID        PID  PPID   LWP  C NLWP    SZ   RSS    PSR  STIME TTY          TIME CMD
firebird  2133  2130  2133  0  149 2191267 913256  11  2012 ?       00:00:16 /opt/fb_252/bin/fb_smp_server
firebird  2133  2130  2134  0  149 2191267 913256   7  2012 ?        00:00:00 /opt/fb_252/bin/fb_smp_server
firebird  2133  2130  2135  0  149 2191267 913256   6  2012 ?        00:04:50 /opt/fb_252/bin/fb_smp_server
firebird  2133  2130 15081 10  149 2191267 913256   8  22:48 ?       00:01:36 /opt/fb_252/bin/fb_smp_server
firebird  2133  2130 15093  0  149 2191267 913256  10  22:48 ?      00:00:00 /opt/fb_252/bin/fb_smp_server
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102578
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!особенности FB местами ни в какие ворота например не лезут
Кстати. Товарищ Yo,!

Помнишь вот эту: 13297731 - дискуссию про перечитывания (рестарты) ораклом записей, которые поменялись с момента начала запроса, идущего с TIL= RC ? Вот твои слова оттуда:Yo.!firebird запись в конце проапдейтит, а ту что в начале нет, хотя такого состояния в БД ни в один момент времени не было.
А чего тогда Оракл не реализовал такой же подход для случая:
Код: sql
1.
2.
3.
select field_01, field_02, some_function(some_arg)
from huge_table t
where ...

- причем pl/sql-функция some_function() возвращает некие значения, основываясь на данных huge_table.
Я так понимаю, что если некий конкурирующий коннект_2 возьмёт да и затолкает в huge_table новые данные, закоммитит их, то когда первый запрос доберётся до них, то ПОКАЖЕТ их - правильно ? Дальше он будет молотить до упора, но тут еще один коннект_3 возьмёт да и грохнет вставленные коннектом_2 записи. И получится, что коннект_1 выдаст в итоге неконсистентные данные - так или нет ?

ЗЫ.
Сведения почерпнуты у дяди Тома :
авторlet’s suppose you are executing a simple query such as select a, b, c, f(x) from t, where a, b, c, and x are columns of a table t and f is a PL/SQL function you’ve written that contains its own SQL statements. And you are seeing what appear to be inconsistent results—that is, the data returned for the first row is inconsistent with the data returned for the last row, something that sounds impossible in Oracle Database. Well, the rules of read consistency have not been violated here: every query executed in this case will be read-consistent. However, each query executed will be read-consistent with respect to itself by default. If you use SQL to execute a function that in turn runs its own SQL, each query executed is by default consistent with itself but not with the original driving SQL.
и вот в этом материальчике. Там в качестве обходного манёрва рекомендуется то же самое: повышать TIL до serializable (или же стартовать запрос в RO-транзакции, но это далеко не всегда возможно).

Ну так вот, вопрос у меня: чего им помешало сделать read consistency в этом случае ?
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102700
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблоид,

завтра попробую потестировать, до сего дня был уверен, что данные берутся на момент старта запроса, не важно есть там функции или нет. было бы странно если олракл сдвигал бы SCN для каждого вызова функции, на мой взгляд для этого нужно дополнительные старания.
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38102776
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey do2) 1 - е что планирую сделать сравнить субд в плане производительности . Для фб написал клиента для тестирования , для оракла делаю в данный момент(точно такого же) как будет готого , выложу всё . Пока вопросы не возникают но дальше я уверен появятся.

Как бы ничего не зная и не умея что-то пытаться тестировать -- это очень смелое желание.
Ну, протестируешь, а дальше что ?
...
Рейтинг: 0 / 0
Требуется опытный наставник
    #38104109
sergey do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivsergey do2) 1 - е что планирую сделать сравнить субд в плане производительности . Для фб написал клиента для тестирования , для оракла делаю в данный момент(точно такого же) как будет готого , выложу всё . Пока вопросы не возникают но дальше я уверен появятся.

Как бы ничего не зная и не умея что-то пытаться тестировать -- это очень смелое желание.
Ну, протестируешь, а дальше что ?

я же говорю , время немного имеется(играть на работе надоело!!) , читать умею , думаю во всем можно разобраться до требуемого уровня , следущий этап я думаю будет связан с безопасностью(обзор и выбор решения), а не знаю и не умею ничего потому что работаю не в айти сфере .
...
Рейтинг: 0 / 0
25 сообщений из 59, страница 1 из 3
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Требуется опытный наставник
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]