Como a CPU intensiva está abrindo e fechando uma conexão de banco de dados (para um aplicativo da web) no MySQL
- ... quando o software DB está em localhost?
- ... quando o software DB está em outra máquina?
Como a CPU intensiva está abrindo e fechando uma conexão de banco de dados (para um aplicativo da web) no MySQL
Eu tenho as seguintes definições de tabela e índice:
CREATE TABLE munkalap (
munkalap_id serial PRIMARY KEY,
...
);
CREATE TABLE munkalap_lepes (
munkalap_lepes_id serial PRIMARY KEY,
munkalap_id integer REFERENCES munkalap (munkalap_id),
...
);
CREATE INDEX idx_munkalap_lepes_munkalap_id ON munkalap_lepes (munkalap_id);
Por que nenhum dos índices em munkalap_id é usado na consulta a seguir?
EXPLAIN ANALYZE SELECT ml.* FROM munkalap m JOIN munkalap_lepes ml USING (munkalap_id);
QUERY PLAN
Hash Join (cost=119.17..2050.88 rows=38046 width=214) (actual time=0.824..18.011 rows=38046 loops=1)
Hash Cond: (ml.munkalap_id = m.munkalap_id)
-> Seq Scan on munkalap_lepes ml (cost=0.00..1313.46 rows=38046 width=214) (actual time=0.005..4.574 rows=38046 loops=1)
-> Hash (cost=78.52..78.52 rows=3252 width=4) (actual time=0.810..0.810 rows=3253 loops=1)
Buckets: 1024 Batches: 1 Memory Usage: 115kB
-> Seq Scan on munkalap m (cost=0.00..78.52 rows=3252 width=4) (actual time=0.003..0.398 rows=3253 loops=1)
Total runtime: 19.786 ms
É o mesmo, mesmo se eu adicionar um filtro:
EXPLAIN ANALYZE SELECT ml.* FROM munkalap m JOIN munkalap_lepes ml USING (munkalap_id) WHERE NOT lezarva;
QUERY PLAN
Hash Join (cost=79.60..1545.79 rows=1006 width=214) (actual time=0.616..10.824 rows=964 loops=1)
Hash Cond: (ml.munkalap_id = m.munkalap_id)
-> Seq Scan on munkalap_lepes ml (cost=0.00..1313.46 rows=38046 width=214) (actual time=0.007..5.061 rows=38046 loops=1)
-> Hash (cost=78.52..78.52 rows=86 width=4) (actual time=0.587..0.587 rows=87 loops=1)
Buckets: 1024 Batches: 1 Memory Usage: 4kB
-> Seq Scan on munkalap m (cost=0.00..78.52 rows=86 width=4) (actual time=0.014..0.560 rows=87 loops=1)
Filter: (NOT lezarva)
Total runtime: 10.911 ms
Existe um campo show
que é um boolean
tipo no postgesql.
Eu quero escrever um sql para atualizar essa tabela, para alternar o valor de show. Se for true
, torna-se false
, se for false
, torna-se true
.
É possível?
Tudo,
Eu tenho o Sql Server 2008 instalado em um servidor (digamos Server1 ) em um domínio (digamos AD ). Eu também tenho uma conta de domínio chamada AD\Sql1 . Esta não é uma conta de administrador no domínio ( AD ), mas quero que seja um administrador no Server1 . E, em seguida, crie um login no Sql Server para essa conta de domínio (não uma conta local).
Como faço isso?
Perguntas:
CREATE LOGIN [AD\Sql1] FROM WINDOWS
não funcionou para mim. Eu tentei e recebi um erro dizendo user does not exist in Windows
(algo assim) Onde foi que eu errei? Compartilhe quaisquer URLs que possam explicar melhor esse conceito.
Edit: Devo acrescentar também que as perguntas 1 e 2 são importantes de forma independente. Eu sei como adicionar uma conta de domínio/windows como sysadmin
. Mas estou interessado em como funciona o mapeamento entre o domínio e as contas locais. Meu objetivo aqui não é como adicionar uma conta local como sysadmin, posso fazer isso rapidamente. Minha intenção não é ser rude, mas ser o mais claro possível. Se minha pergunta ainda não estiver clara, por favor me avise, para que eu possa adicionar mais detalhes.
Obrigado,
_UB
Editar: Gramática
No Postgres, pode-se definir fillfactor para um índice, bem como uma tabela. Qual é a diferença? Como decidir valores para ambos. Quais são os casos de uso?
Estou tentando agrupar uma relação espacial em um índice espacial. Tem alguns milhões de registros. Os registros são atualizados o tempo todo, embora poucos novos sejam criados diariamente.
O caso de uso são consultas de intervalo espacial. Qual será um bom valor para o fator de preenchimento da tabela e/ou fator de preenchimento do índice?
Eu notei um comportamento estranho do SQL Server 2008 r2 express:
geralmente o tempo de execução da minha consulta é de aproximadamente 650ms, mas se eu abrir o Management Studio e executar qualquer consulta simples (por exemplo SELECT * FROM Something
), o tempo de execução será de aproximadamente 40ms. Se eu fechar o estúdio de gerenciamento, esse valor volta ao normal ~ 650ms
E não importa onde a consulta foi executada: no Management Studio ou no meu aplicativo (ele usa ADO.Net)
A configuração ARITHABORT não tem efeito
Por que isso está acontecendo?
Costuma-se repetir que o problema do Big Data é que os bancos de dados relacionais não podem ser dimensionados para processar os enormes volumes de dados que agora estão sendo criados.
Mas quais são essas limitações de escalabilidade às quais as soluções de Big Data, como o Hadoop, não estão vinculadas? Por que o fragmento Oracle RAC ou MySQL ou MPP RDBMS como Teradata (etc.) não consegue essas proezas?
Estou interessado nas limitações técnicas - estou ciente de que os custos financeiros de clustering RDBMS podem ser proibitivos.
É bastante simples corrigir um único usuário SQL órfão para um login usando:
EXEC sp_change_users_login 'Auto_Fix', 'usuário'
Eu poderia fazer um script disso, mas existe um procedimento armazenado existente que tenta automaticamente corrigir todos os usuários órfãos em um determinado banco de dados?
Imagine um fluxo de dados que é "rajada", ou seja, pode ter 10.000 eventos chegando muito rapidamente, seguidos por nada por um minuto.
Seu conselho de especialista: como posso escrever o código de inserção C# para o SQL Server, de forma que haja uma garantia de que o SQL armazene tudo imediatamente em sua própria RAM, sem bloquear meu aplicativo por mais do que o necessário para alimentar os dados na referida RAM? Para conseguir isso, você conhece algum padrão de configuração do próprio servidor SQL ou padrões para configurar as tabelas SQL individuais nas quais estou escrevendo?
Claro, eu poderia fazer minha própria versão, que envolve construir minha própria fila na RAM - mas não quero reinventar o Machado de Pedra Paleolítico, por assim dizer.
Estamos no processo de construção de um aplicativo da web que possui um componente de dados espaciais. No início, nossas comparações de dados espaciais tomarão um determinado ponto e retornarão polígonos espaciais sobrepostos correspondentes.
Dito isto, nosso banco de dados tem muitos outros componentes que incluem todas as coisas típicas que você encontraria em seu banco de dados relacional geral.
Estamos no ponto de nosso projeto em que devemos escolher qual solução de banco de dados usar.
Todos os membros do projeto estão mais familiarizados com a implementação e administração do MySQL, mas todas as pesquisas sugerem que o PostgreSQL é a melhor solução - especialmente no que diz respeito a dados espaciais usando postGIS.
Esperamos (esperamos) que nosso aplicativo experimente muita ação com muitos usuários simultâneos.
Alguém com experiência em usar o MySQL como seu RDBMS com um componente de dados espaciais tem algum conselho/experiência de longo prazo?
Há alguma desvantagem em usar o PostGIS com exceção da familiaridade?