_ Olá,
minha configuração é um SSH lento para alguma máquina linux. A partir daí, inicio um cliente de terminal mysql e executo cerca de 200 mil inserções (em um loop while dentro de um procedimento armazenado). Isso leva cerca de 3 horas para ser concluído. No entanto, meu senso interno está me dizendo que 200k inserções não podem demorar tanto (o banco de dados está vazio), então estou supondo que o feedback do banco de dados (a linha é impressa no descritor de arquivo stdin do terminal) é impresso na tela muito devagar; primeiro no terminal local da máquina linux e, em seguida, ainda mais devagar na tela da qual estou fazendo SSH.
Eu certamente gostaria de desligar todos os comentários do mysqld para que eu soubesse quando as inserções terminassem apenas quando o prompt do cliente do mysql voltasse. Provavelmente muito antes de 3 horas. Como eu poderia fazer isso?
/etc/my.cnf segue:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
segue os procedimentos armazenados:
select 'Initializing database..';
call TigInitdb();
-- Possible encodings are:
-- - 'MD5-USERID-PASSWORD'
-- - 'MD5-PASSWORD'
-- - 'PLAIN'
-- More can be added if needed.
call TigPutDBProperty('password-encoding', 'PLAIN');
call TigPutDBProperty('schema-version', '4.0');
select 'Adding new users with PlainPw: ', '+391xxxxxx', 'pwd_xxxxxx';
drop function if exists TigUserGen;
delimiter //
create procedure TigAddUser(_user_id varchar(2049) CHARSET utf8, _user_pw varchar(255) CHARSET utf8)
begin
declare res_uid bigint unsigned;
insert into tig_users (user_id, sha1_user_id, user_pw)
values (_user_id, sha1(lower(_user_id)), _user_pw);
select LAST_INSERT_ID() into res_uid;
insert into tig_nodes (parent_nid, uid, node)
values (NULL, res_uid, 'root');
if _user_pw is NULL then
update tig_users set account_status = -1 where uid = res_uid;
end if;
select res_uid as uid;
end //
create procedure TigUserGen(usr_count INT)
begin
DECLARE cnt,len INT;
DECLARE usr CHAR(6);
SET cnt = 0;
SET len = 0;
SET usr = '';
WHILE cnt < usr_count DO
SET cnt = cnt + 1;
SET usr = CAST(cnt AS CHAR(6));
SET len = CHAR_LENGTH(usr);
CASE len
WHEN 1 THEN
call TigTestAddUser(CONCAT('+39100000', usr), CONCAT('pwd_00000', usr), 'SUCCESS - adding new user', 'ERROR - adding new user');
WHEN 2 THEN
call TigTestAddUser(CONCAT('+3910000', usr), CONCAT('pwd_0000', usr), 'SUCCESS - adding new user', 'ERROR - adding new user');
WHEN 3 THEN
call TigTestAddUser(CONCAT('+391000', usr), CONCAT('pwd_000', usr), 'SUCCESS - adding new user', 'ERROR - adding new user');
WHEN 4 THEN
call TigTestAddUser(CONCAT('+39100', usr), CONCAT('pwd_00', usr), 'SUCCESS - adding new user', 'ERROR - adding new user');
WHEN 5 THEN
call TigTestAddUser(CONCAT('+3910', usr), CONCAT('pwd_0', usr), 'SUCCESS - adding new user', 'ERROR - adding new user');
ELSE
call TigTestAddUser(CONCAT('+391', usr), CONCAT('pwd_', usr), 'SUCCESS - adding new user', 'ERROR - adding new user');
END CASE;
END WHILE;
end //
delimiter ;
call TigUserGen(200000);
Obrigado
Tente comentar o eco do uid
Tente limitar a saída dos ids em grupos de 1250