powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Mysql call proceudre for each
6 сообщений из 6, страница 1 из 1
Mysql call proceudre for each
    #38645647
Moniak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не Ругайте за мой руский язык
доброй времени суток всем.Ребята надо помощь знающих людей
есть Дб где есть процедура который проверят клиентов если токова нет то добовляет
в прграме таких клиентов около 9 000 000 я октрываю соединения и не закрываю . и циклом вызиваю эту процедуру
гдето за 1 сек проходит 120 вызовов.вот после каждого 120 вызово гдето от 8-до 10 сек идет пауза)
пример лога

2014-05-19 15:10:50
добавленно 110091

2014-05-19 15:11:15
добавленно 110210

2014-05-19 15:12:05
добавленно110330


2014-05-19 15:12:42
добавленно 110449
в чем может быть проблеммма? где искать и как?
заранее спс
...
Рейтинг: 0 / 0
Mysql call proceudre for each
    #38645652
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Показывайте код, который пишет этот лог.

И что именно делается в "процедура который проверят клиентов если токова нет то добовляет" ?
...
Рейтинг: 0 / 0
Mysql call proceudre for each
    #38645676
Moniak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE DEFINER=`data`@`%` PROCEDURE `Add_Group_Details`(P_Group_Name varchar(200),P_Sub_Group_Name varchar(200),

                                                   p_PIN            varchar(40),

                                                   p_FirstName      varchar(200),

                                                   p_LastName       varchar(200),
 
                                                   p_Email           varchar(50),
 
                                                   p_Mobile         varchar(20),
 
                                                   p_BritshDate     Date,
 
                                                   p_Gender         varchar(200))
BEGIN
	DECLARE
		i_sub_groups_ID DECIMAL;
 
DECLARE
	i_groups_ID DECIMAL;
 
DECLARE
	i_Groups_Client_ID DECIMAL;
 
DECLARE
 	i_user_details_ID DECIMAL;
  DECLARE
 	t_ClientID DECIMAL;
  DECLARE
 	t_PIN VARCHAR (200);
  DECLARE
 	t_FirstName VARCHAR (200);
  DECLARE
 	t_LastName VARCHAR (200);
  DECLARE
 	t_Email VARCHAR (200);
  DECLARE
 	t_Mobile VARCHAR (200);
  DECLARE
 	t_BritshDate DATE;
  DECLARE
 	t_Gender VARCHAR (200);

set P_Group_Name=trim(P_Group_Name);
 set P_Sub_Group_Name=trim(P_Sub_Group_Name);
 set p_PIN=trim(p_PIN);
 set p_FirstName=trim(p_FirstName);
 set p_LastName=trim(p_LastName);
 set p_Email=trim(p_Email);
 set p_Mobile=trim(p_Mobile);
 set p_Gender=trim(p_Gender);


if	((p_PIN is null or p_PIN='') and (p_Email is null or p_Email='') and (p_Mobile is null or p_Mobile='') )	
then 
CALL `raise`(1356, 'person number and phone and email is null');
select 'Error';
end if;

if	(P_Group_Name is null or P_Group_Name='' or  P_Sub_Group_Name is null or P_Sub_Group_Name='' ) then
CALL `raise`(1356, 'pgroup Name or Sub group Name is null');
select 'Error';
end if;	


     SET i_groups_ID = (
 	SELECT
 		GROUPS_ID
 	FROM
 		GROUPS
 	WHERE
 		trim(NAME) = P_Group_Name
 	AND ESHELON = FALSE
 	LIMIT 1
 );

   IF (i_groups_ID IS NULL) THEN
 	INSERT INTO GROUPS (
 		NAME,
 		GROUP_TYPE_ID,
 		STATE,
 		DESCRIPTION,
 		REGDATE,
 		CREATOR_ID,
 		CREATE_TIME,
 		MODIFIER_ID,
 		MODIFIED_TIME,
 		HOST_ADDRESS,
 		PAREN_GROUPS_ID,
 		ESHELON,
 		MAIL_COUNT,
 		SMS_COUNT
 	)
 VALUES
 	(
 		P_Group_Name,
 		1,
 		1,
 		'QUARTZ',
 		now(),
 		'system',
 		now(),
 		'QUARTZ',
 		now(),
 		'',
 		NULL,
 		0,
 		0,
 		0
 	);
   SET i_groups_ID = LAST_INSERT_ID();
   END
 IF;
   SET i_sub_groups_ID = (
 	SELECT
 		GROUPS_ID
 	FROM
 		GROUPS
 	WHERE
 		trim(NAME) = P_Sub_Group_Name
 	AND eshelon = TRUE and PAREN_GROUPS_ID=i_groups_ID
 	LIMIT 1
 );
   IF (i_sub_groups_ID IS NULL) THEN
 	INSERT INTO GROUPS (
 		NAME,
 		GROUP_TYPE_ID,
 		STATE,
 		DESCRIPTION,
 		REGDATE,
 		CREATOR_ID,
 		CREATE_TIME,
 		MODIFIER_ID,
 		MODIFIED_TIME,
 		HOST_ADDRESS,
 		PAREN_GROUPS_ID,
 		ESHELON,
 		MAIL_COUNT,
 		SMS_COUNT
 	)
 VALUES
 	(
 		P_Sub_Group_Name,
 		1,
 		1,
 		'QUARTZ',
 		now(),
 		'system',
 		now(),
 		'QUARTZ',
 		now(),
 		'',
 		i_groups_ID,
 		1,
 		0,
 		0
 	);
   SET i_sub_groups_ID = LAST_INSERT_ID();
   END
 IF;
  SELECT
 	c.CLIENT_ID,
 	c.PERSON_NUMBER,
 	c.FIRSTNAME,
 	c.LASTNAME,
 	c.EMAIL,
 	c.PHONE,
 	c.BIRTHDATE,
 	c.GENDER INTO t_ClientID,
 	t_PIN,
 	t_FirstName,
 	t_LastName,
 	t_Email,
 	t_Mobile,
 	t_BritshDate,
 	t_Gender
 FROM
 	CLIENT c
 WHERE
 	(c.PERSON_NUMBER = p_Pin
 		AND TRIM(p_Pin) <> '' and p_Pin is not null and p_Pin<>'null'
 	) OR (
 	c.EMAIL = p_Email
 	AND TRIM(p_Email) <> ''and p_Email is not null and p_Email<>'null'
 ) OR (
 	c.PHONE = p_Mobile
 	AND TRIM(p_Mobile) <> ''and p_Mobile is not null and p_Mobile<>'null'
 )
 LIMIT 1;
   IF (t_ClientID IS NULL) THEN
 	INSERT INTO CLIENT (
 		PERSON_NUMBER,
 		FIRSTNAME,
 		LASTNAME,
 		BIRTHDATE,
 		STATE,
 		REG_DATE,
 		GENDER,
 		CREATOR_ID,
 		CREATE_TIME,
 		MODIFIER_ID,
 		MODIFIED_TIME,
 		HOST_ADDRESS,
 		EMAIL,
 		PHONE
 	)
 VALUES
 	(
 		p_PIN,
 		p_FirstName,
 		p_LastName,
 		p_BritshDate,
 		1,
 		now(),
 		p_Gender,
 		'QUARTZ',
 		now(),
 		'QUARTZ',
 		now(),
 		'Quartz',
 		p_Email,
 		p_Mobile
 	);
   SET t_ClientID = LAST_INSERT_ID();
   ELSEIF (

((p_PIN IS not NULL or p_PIN<>'') and (t_PIN IS NULL or trim(t_PIN)=''))
or ((p_Mobile IS not NULL or p_Mobile<>'') and (t_Mobile IS NULL or trim(t_Mobile)=''))
or ((p_Email IS not NULL or p_Email<>'') and (t_Email IS NULL or trim(t_Email)=''))
or ((p_Gender IS not NULL or p_Gender<>'') and (t_Gender IS NULL or trim(t_Gender)=''))
or ((p_FirstName IS not NULL or p_FirstName<>'') and (t_FirstName IS NULL or trim(t_FirstName)=''))
or ((p_LastName IS not NULL or p_LastName<>'') and (t_LastName IS NULL or trim(t_LastName)=''))
or ((p_BritshDate IS not NULL or p_BritshDate<>'') and (t_BritshDate IS NULL or trim(t_BritshDate)=''))

 ) THEN
 	UPDATE CLIENT
 SET person_number =case when((p_Pin is not null and p_Pin<>'')and (person_number is null or person_number='')) then  p_Pin else person_number end,
FIRSTNAME =case when((p_FirstName is not null and p_FirstName<>'')and (FIRSTNAME is null or FIRSTNAME='')) then  p_FirstName else FIRSTNAME end,
LASTNAME =case when((LASTNAME is not null and LASTNAME<>'')and (p_LastName is null or p_LastName='')) then  p_LastName else LASTNAME end,
GENDER =case when((p_Gender is not null and p_Gender<>'')and (GENDER is null or GENDER='')) then  p_Gender else GENDER end,
EMAIL =case when((p_Email is not null and p_Email<>'')and (EMAIL is null or EMAIL='')) then  p_Email else EMAIL end,
PHONE =case when((p_Mobile is not null and p_Mobile<>'')and (PHONE is null or PHONE='')) then  p_Mobile else PHONE end,
BIRTHDATE =case when((p_BritshDate is not null and p_BritshDate<>'')and (BIRTHDATE is null or BIRTHDATE='')) then  p_BritshDate else BIRTHDATE end,
MODIFIER_ID = 'QUARTZ',
MODIFIED_TIME = now()

 WHERE
 	CLIENT_ID = t_ClientID;
   END IF;

   SET i_Groups_Client_ID = (
 	SELECT
 		GROUPS_CLIENTS_ID
 	FROM
 		GROUPS_CLIENTS
 	WHERE
 		CLIENT_ID = t_ClientID
 	AND GROUPS_ID = i_sub_groups_ID
 	LIMIT 1
 );



   IF (i_Groups_Client_ID IS NULL) THEN
 	INSERT INTO GROUPS_CLIENTS (
 		CLIENT_ID,
 		GROUPS_ID,
 		STATE,
 		REG_DATE,
 		CREATOR_ID,
 		CREATE_TIME,
 		MODIFIER_ID,
 		MODIFIED_TIME,
 		HOST_ADDRESS
 	)
 VALUES
 	(
 		t_ClientID,
 		i_sub_groups_ID,
 		1,
 		now(),
 		'Quartz',
 		now(),
 		'Quartz',
 		now(),
 		'LocalHost'
 	);
   END
 IF;
   END
...
Рейтинг: 0 / 0
Mysql call proceudre for each
    #38645774
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Moniak,

1. что творится на этом сервере помимо данной задачи?
2. включите и последите за "htop"
3. включите и последите за "mytop"
4. включите и последите за "iotop"
5. найдите на диске и поизучайте slow-query.log
6. Поставьте таймер на вызов этой процедуры. примерно
так в вызываюшем коде:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
counter = 0
loop start
  time_value = Time.now()
  call_procedure(param1, param2, param3)  
  counter += 1
  time_diff = Time.now() - time_value
  print "N={counter}   time={time_diff}  p1={param1}  p3={param1}  p3={param3}"
loop end

7. как у вас с комитом? попробийте поставить комит в явном виде.
Может все замедлится. надо посмотреть.
...
Рейтинг: 0 / 0
Mysql call proceudre for each
    #38645775
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
8. покажите результат:
wget mysqltuner.pl
perl mysqltuner.pl
...
Рейтинг: 0 / 0
Mysql call proceudre for each
    #38646095
Moniak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ребят всем спасибо сам разобрался оказывается Nlog была причиной задержки
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Mysql call proceudre for each
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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