Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

InfoWebHouse

Porque o Mysql trava?

Recommended Posts

Bom dia!Fiz uma aplicação que importa dados do XML, nesse xml possui um pouco mais de 500 mil registros... minha rotina fuinciona perfeitamente, mas infelizmente meu mysql usa cerca de 60% do processador... Eu uso da seguinte forma, tenho 2 tabelas no meu banco, uma é de produtos e outra é de categorias, eu faço um select nas tabelas de categorias para eu possa informar ao mysql os codigo de cada categoria a ser importada.... dai, existem 2300 categorias, eu mando pro xml o codigo de cada uma e faço 1 insert para cada produto,.... e nisso meu banco ta "sentando"Alguem poderia me dar umas dicas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dicas para importar? Não tem muito o que dizer a respeito não, o sistema sobrecarrega por conta de várias instruções que ocorrem quase que simultaneamente, aconselho que tente separar ainda mais a quantidade de registros que será importada por vez.

 

Quando você diz travar esta se referindo ao que exatamente? Lentidão extrema? Os indices e chaves desta tabela estão bem definidos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, lentidão do servidor...

 

No WHM mostra q o mysql utilizou um pico de 108% de uso do processador...

 

O Seguinte, tenho 2 tabelas básicas: PRODUTOS e CATEGORIA, na tabela de categoria tenho uma chave primária que é o ID_CATEGORIA, e no produtos tenho uma chave primaria que é o ID_CATEGORIA, quando mando o script rodar, ele faz um select na tabela de categoria e retorna as ID's, dai, para cada linha retornada eu importo os produtos daquela categoria, assim ó:

 

 

$exe = mysql_query("Select id_categoria from categoria",$conn);while($rs = mysql_fetch_object($exe)) {	   importa_produtos($rs->id_categoria);}//na funcao de importar produtos, ele pega um XML que passa como parametro o ID da categoria, cada categoria tem +- 50 produtos, multiplicando ae, 50 x 2234, daria  +- 111.700 produtos.... mas isso é um numero baixo já que é cadastrado diariamente uns 100 produtos por categoria. dai, imagine, rola várias instruções de insert... nessa parte e que o servidor "Senta". OBS: esse script roda de 1 em 1 hora, pode acontecer de o script rodar e ainda nao ter terminado o precessamento do outro....

Compartilhar este post


Link para o post
Compartilhar em outros sites

você digitou errado ou a chave primaria de ambas as tabelas são a mesma?

Essa tabela de produtos tem quantos campos? Quer mostrar a modelagem das suas tabelas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia!

 

A estrutura delas é a seguinte:

 

-- phpMyAdmin SQL Dump

-- version 2.6.4-pl2

-- http://www.phpmyadmin.net

--

-- Host: localhost

-- Generation Time: Jan 02, 2006 at 10:02 AM

-- Server version: 4.0.25

-- PHP Version: 4.3.11

--

-- Database: `compr4_banco`

--

 

-- --------------------------------------------------------

 

--

-- Table structure for table `produtos`

--

 

CREATE TABLE `produtos` (

`id_produto` varchar(10) NOT NULL default '',

`id_categoria` varchar(10) NOT NULL default '',

`titulo` varchar(255) NOT NULL default '',

`link` varchar(255) NOT NULL default '',

`img` varchar(255) NOT NULL default '',

`vendedor` varchar(100) NOT NULL default '',

`tipo_venda` varchar(100) NOT NULL default '',

`mercadopago` varchar(20) NOT NULL default '',

`moeda` varchar(20) NOT NULL default '',

`preco` decimal(10,2) NOT NULL default '0.00',

`hot` varchar(100) NOT NULL default '',

`fechamento` datetime NOT NULL default '0000-00-00 00:00:00',

`final` varchar(20) NOT NULL default '0000-00-00 00:00:00',

`ativo` varchar(10) NOT NULL default '',

`encerramento` datetime NOT NULL default '0000-00-00 00:00:00',

`hits` int(5) NOT NULL default '0',

`bids` int(5) NOT NULL default '0',

`url` varchar(255) NOT NULL default '',

`linkm` varchar(255) default NULL,

PRIMARY KEY (`id_produto`)

) TYPE=InnoDB;

 

-- phpMyAdmin SQL Dump

-- version 2.6.4-pl2

-- http://www.phpmyadmin.net

--

-- Host: localhost

-- Generation Time: Jan 02, 2006 at 10:03 AM

-- Server version: 4.0.25

-- PHP Version: 4.3.11

--

-- Database: `compr4_banco`

--

 

-- --------------------------------------------------------

 

--

-- Table structure for table `categoria`

--

 

CREATE TABLE `categoria` (

`categoria_id` varchar(10) NOT NULL default '',

`nome` varchar(255) NOT NULL default '',

`url` varchar(255) NOT NULL default '',

`supcat` varchar(10) default NULL,

`ativo` char(1) default NULL,

PRIMARY KEY (`categoria_id`)

) TYPE=InnoDB;

 

 

Estou no MSN por favor, entre em contato comigo.. .rs...

 

infowebhouse@hotmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Questionamentos...

 

- É necessário que todos esses campos varchar tenham toda esse tamanho? Seria interessante dar uma revisada.

 

- O campo categoria_id necessariamente precisa ser varchar?

 

- Na tabela de produtos, você pode criar um indice com os campos id_categoria e id_produto, provavelmente você vai usar muito este tipo de relacionamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Ae.....

 

Cara meu banco abaixou muito o tamanho dele.... sinto que ainda está um pouco lento, mas acho que não tem como melhorar muito já que tem muitos registros....

 

Teria outras dicas???

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.