Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
Muhiddin Hayrullaev
Member

Откуда:
Сообщений: 30
как в C# написать программу которая обрабатывала сотню запросов за секунды. Есть БД (Оракл)
нужно чтоб прогрпмма читала около 2 млн записей за считанные секунды. Возможно ли это написать на C#?
5 фев 09, 16:46    [6784553]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
Muhiddin Hayrullaev
Member

Откуда:
Сообщений: 30
и есче одно, какой драйвер для этого использовать. Я использую ОДБС.
5 фев 09, 16:47    [6784564]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Muhiddin Hayrullaev
как в C# написать программу которая обрабатывала сотню запросов за секунды. Есть БД (Оракл)
нужно чтоб прогрпмма читала около 2 млн записей за считанные секунды. Возможно ли это написать на C#?

Очень даже возможно. Пишите PL процедуру на Oracle передаете из C# нужные параметры если таковые имеются. И напрягаете сервер на обработку. Дожидаетесь возрата курсора. и вередаете в диалоге что все хорошо.
5 фев 09, 16:48    [6784575]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
Обратитесь в любую аутсорсинговую компанию по разработке решений на дотнете + оракуль.
Либо, как вариант, найти аутсорсера-одиночку, который за доступные деньги реализует (или попытается) Ваши требования.
5 фев 09, 16:49    [6784587]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Muhiddin Hayrullaev
и есче одно, какой драйвер для этого использовать. Я использую ОДБС.

лучше ODAC. или DOA, ну на крайней случай бесплатный ADO. будет лучше чем ODBC
5 фев 09, 16:50    [6784592]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Muhiddin Hayrullaev
как в C# написать программу которая обрабатывала сотню запросов за секунды. Есть БД (Оракл)
нужно чтоб прогрпмма читала около 2 млн записей за считанные секунды. Возможно ли это написать на C#?

а если по теме то два варианта.
1. если есть доступ к базе т.е. можно создавать процы и все такое пишите процедуру.
2. если нет. то обращайтесь к МСУ он вам любое приложение на NET напишет за деньги.
Вообще оракл достаточно мощная БД зачем что то писать на стороне. если только оболочку. И если делать обработку в приложении то это приложение должно стоять на сервере.
5 фев 09, 16:53    [6784627]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
gds
Muhiddin Hayrullaev
и есче одно, какой драйвер для этого использовать. Я использую ОДБС.

лучше ODAC. или DOA, ну на крайней случай бесплатный ADO. будет лучше чем ODBC

Тьфу ступил ADO в Delphi а нет в C#.
Хотя там должен быть в реферансах OracleConnect и OracleCommand вроде со 2.0 идет.
5 фев 09, 16:55    [6784648]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
gds
Тьфу ступил ADO в Delphi а нет в C#.

В дотнете можно спокойно юзать классик-адо :)
5 фев 09, 16:57    [6784662]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
МСУ
gds
Тьфу ступил ADO в Delphi а нет в C#.

В дотнете можно спокойно юзать классик-адо :)

не знаю. только изучаю.
5 фев 09, 16:59    [6784679]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог


К сообщению приложен файл. Размер - 0Kb
5 фев 09, 17:00    [6784687]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
Muhiddin Hayrullaev
Member

Откуда:
Сообщений: 30
Когда использую OracleClient то после 35,000 запросов он сильно замедляется в чем причина?
5 фев 09, 17:03    [6784711]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
Muhiddin Hayrullaev
Когда использую OracleClient то после 35,000 запросов он сильно замедляется в чем причина?

35,000 запросов ??? А одним запросом никак не обойтить?
5 фев 09, 17:05    [6784726]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
Muhiddin Hayrullaev
Member

Откуда:
Сообщений: 30
я имел ввиду после 35000 строк или как там
5 фев 09, 17:06    [6784735]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Muhiddin Hayrullaev
Когда использую OracleClient то после 35,000 запросов он сильно замедляется в чем причина?

не понял вы делаете 35,000 объектов в каждом один запрос ? или один объект и 35,000 запросов в нем?
5 фев 09, 17:08    [6784748]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Muhiddin Hayrullaev
я имел ввиду после 35000 строк или как там

а код как вы это делаете можно в студию?
5 фев 09, 17:09    [6784761]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Muhiddin Hayrullaev
я имел ввиду после 35000 строк или как там

Если вы имели ввиду. вывод на экра или в Грид. замедляется.
1. Вы будите это обрабатывать в ручную?
1.1. если нет то зачем это все еще и в грид пихать пусть кверик сам отрабатывает, а по окончаию просто выдаст результат в виде модального окна или записи вкаком нить memo
1.2. если да то ставите фильтр или выводите порциями.
5 фев 09, 17:50    [6785018]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
gds
Muhiddin Hayrullaev
я имел ввиду после 35000 строк или как там

а код как вы это делаете можно в студию?


Первый и единственный (пока) толковый пост во всём сабже :)
5 фев 09, 17:52    [6785032]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
gds
Грид. замедляется.

Видимо, я упустил где-то про грид...

Muhiddin Hayrullaev, Вы в грид хотите забулкать 35,000 строк? Зачем?
5 фев 09, 17:53    [6785042]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
МСУ
gds
Грид. замедляется.

Видимо, я упустил где-то про грид...

Muhiddin Hayrullaev, Вы в грид хотите забулкать 35,000 строк? Зачем?

Это я про грид додумал. Со слов почему же после 35,000 строк а не раньше или не позже. видимо человек хочет куда то загрузить эти строки, может и не в грид может еще куда, и наблюдать как они отрабатывают.
5 фев 09, 18:04    [6785091]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
Василий Викторович
Member

Откуда: Харьков
Сообщений: 287
Muhiddin Hayrullaev, по моему мнению такой большой обьем данных нужен только для тестов (когда в базе ничего нет а скрипты нужно протестить) а значит можно немного подождать
для переноса данных курите использование серверных утилит копирования
а на клиентской стороне отдавайте уже разбитые на страницы данные
5 фев 09, 19:17    [6785378]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
Muhiddin Hayrullaev
Member

Откуда:
Сообщений: 30
Никакой грид я не использую. Мне нужно с одной таблицы в другую копировать данные используя исключения и логику.
6 фев 09, 07:02    [6786218]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
Muhiddin Hayrullaev
Member

Откуда:
Сообщений: 30
OdbcDataReader reader1, reader2, reader3, reader4;

string new_acc = "", custt = "";
bool type = false;
List<String> list = new List<String>();

string query = "select * from conv.saldo_val_dtn where STATUS = 0 order by account asc";
//string query = "select * from conv.saldo_xxx where STATUS = 0";
cmd1 = new OdbcCommand(query, conn);
reader1 = cmd1.ExecuteReader();
if (reader1.HasRows)
{
while (reader1.Read())
{
lb_row_count.Invoke(new MethodInvoker(progress_bar)); //для создания потока
type = false;
string account = reader1[0].ToString();
string saldo_t = reader1[1].ToString();
string obor_d_y = reader1[2].ToString();
string obor_c_y = reader1[3].ToString();
string datn = format_date("Y", reader1[4].ToString(), "dd/MM/yyyy");
string saldo = reader1[5].ToString();
string currency = get_currency_code(account);
string chk_curr = account.Substring(5, 3);

string sql_query = "SELECT CUSTSEQ FROM CM1.TBCM_GENERAL WHERE LOCCUSTNO = '" + account.Substring(9, 8) + "' and BRCD = '6000'";
cmd3 = new OdbcCommand(sql_query, conn);
reader3 = cmd3.ExecuteReader();
if (reader3.HasRows)
{
while (reader3.Read())
{
custt = reader3[0].ToString();
}
}

string query2 = "select acctcd, baltpcd from conv.sal_lg where acctcd = '" + account.Substring(0, 5) + "'";
//string query2 = "select acctcd, baltpcd from conv.sal_lg_xxx where acctcd = '" + account.Substring(0, 5) + "'";
cmd2 = new OdbcCommand(query2, conn);
reader2 = cmd2.ExecuteReader();
if (reader2.HasRows)
{
while (reader2.Read())
{
string baltpcd = reader2[1].ToString();
string acctcd = reader2[0].ToString();
string saldo_t_s = "", obor_d_y_s = "", obor_c_y_s = "", saldo_s = "";

string chk_sym = acctcd + chk_curr;

if (baltpcd == "D01" || baltpcd == "D04")
{
string sel_query = "select sum(saldo_t), sum(obor_d_y), sum(obor_c_y), sum(saldo) from conv.saldo_val_dtn where substr(account, 0, 5) = '" + acctcd + "' and status ='0' and substr(account, 6, 3) = '" + chk_curr + "'";
//string sel_query = "select sum(saldo_t), sum(obor_d_y), sum(obor_c_y), sum(saldo) from conv.saldo_xxx where substr(account, 0, 5) = '" + acctcd + "'";
cmd4 = new OdbcCommand(sel_query, conn);
reader4 = cmd4.ExecuteReader();
if (reader4.HasRows)
{
while (reader4.Read())
{
saldo_t_s = reader4[0].ToString();
obor_d_y_s = reader4[1].ToString();
obor_c_y_s = reader4[2].ToString();
saldo_s = reader4[3].ToString();
new_acc = get_new_account(account);

for (int l = 0; l < list.Count; l++)
{
if (list[l].ToString() != chk_sym)
type = false;
else
type = true;
}

if (type == false)
{
saldo_t_s = saldo_t_s.Replace("-", "").Trim();
obor_d_y_s = obor_d_y_s.Replace("-", "").Trim();
obor_c_y_s = obor_c_y_s.Replace("-", "").Trim();
saldo_s = saldo_s.Replace("-", "").Trim();

string query_insert = "insert into conv.TBGL_MAST values (";
query_insert += "'20090101', '6210', '1', '" + currency + "', ";
query_insert += "'" + new_acc.Substring(0, 5).PadRight(6, '0') + "', ";
query_insert += "'" + custt + "', " + saldo_t_s + ", 1, " + obor_d_y_s + ", ";
query_insert += "1, " + obor_c_y_s + ", " + saldo_s + ", 0, 0, 0, 0, 0, ";
query_insert += "0, '0', null, '" + new_acc + "', 'NULL', 'NULL')";

cmd1 = new OdbcCommand(query_insert, conn);
try
{
cmd1.ExecuteNonQuery();
lb_row_count.Invoke(new MethodInvoker(row_count));
}
catch (Exception ex)
{
//lb_res_st.Invoke(new MethodInvoker(lb_res));
//lb_res_st.Text = "Error: " + ex.ToString();
//lb_res_st.Refresh();
//return;
}

list.Add(chk_sym);
type = true;
break;
}
}
}
}
break;
}
}

if (type == false)
{
saldo_t = saldo_t.Replace("-", "").Trim();
obor_d_y = obor_d_y.Replace("-", "").Trim();
obor_c_y = obor_c_y.Replace("-", "").Trim();
saldo = saldo.Replace("-", "").Trim();

string query_insert2 = "insert into conv.TBGL_MAST values (";
query_insert2 += "'20090101', '6210', '1', '" + currency + "', ";
query_insert2 += "'" + account.Substring(0, 5).PadRight(6, '0') + "', ";
query_insert2 += "'" + custt + "', " + saldo_t + ", 1, " + obor_d_y + ", ";
query_insert2 += "1, " + obor_c_y + ", " + saldo + ", 0, 0, 0, 0, 0, ";
query_insert2 += "0, '0', null, '" + account + "', 'NULL', 'NULL')";

cmd1 = new OdbcCommand(query_insert2, conn);
try
{
cmd1.ExecuteNonQuery();
lb_row_count.Invoke(new MethodInvoker(row_count));
}
catch (Exception ex)
{
//lb_res.Invoke(new MethodInvoker(lb_res));
//lb_res_st.Text = "Error: " + ex.ToString();
//lb_res_st.Refresh();
//return;
}
}
}
}
6 фев 09, 07:04    [6786220]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
Ъй
Member

Откуда:
Сообщений: 2747
Вопрос про сферического коня в вакууме. Какие запросы, каков их план, какова селективность данных, есть ли индексы, и какие они, есть ли блокировки в параллельных сессиях, секционированы ли таблицы, или они вообще index-organized, и т.п.

Первым делом мы испортим самолёты.
6 фев 09, 07:10    [6786223]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
Muhiddin Hayrullaev
Member

Откуда:
Сообщений: 30
вот такой вод код. Я в С# новичок поэтому прошуВас не смеятся над мори кодом
6 фев 09, 07:10    [6786225]     Ответить | Цитировать Сообщить модератору
 Re: как в C# написать программу которая обрабатывала сотню запросов за секунды  [new]
Muhiddin Hayrullaev
Member

Откуда:
Сообщений: 30
автор

Вопрос про сферического коня в вакууме. Какие запросы, каков их план, какова селективность данных, есть ли индексы, и какие они, есть ли блокировки в параллельных сессиях, секционированы ли таблицы, или они вообще index-organized, и т.п.


нет ничего такого. Простая таблица большого объема
6 фев 09, 07:11    [6786226]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / WinForms, .Net Framework Ответить