AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-5691

RaoulRubin's questions

Martin Hope
RaoulRubin
Asked: 2014-06-04 06:47:48 +0800 CST

Sinônimos e transações

  • 4

Estou trabalhando com um aplicativo que usa sinônimos SQL para alternar entre tabelas em bancos de dados locais e remotos sem duplicar o código.

BEGIN TRANSACTION
if (@isRemote = 1) 
    BEGIN
       CREATE SYNONYM SY_SUBJECTS FOR [MT00011].[DBO].[SUBJECTS];
    END
ELSE
    BEGIN
       CREATE SYNONYM SY_SUBJECTS FOR [SUBJECTS];
    END
-- do some complex work on SY_SUBJECTS
DROP SYNONYM SY_SUBJECTS
COMMIT

Esse código é chamado por várias solicitações simultaneamente. Estou preocupado que isso cause problemas se esse código for chamado ao mesmo tempo. Ele é executado 99% do tempo em um único banco de dados SQL, e o caso "remoto" é executado após o expediente.

há um problema aqui?

sql-server t-sql
  • 2 respostas
  • 2341 Views
Martin Hope
RaoulRubin
Asked: 2012-02-14 10:30:24 +0800 CST

Como os campos INCLUDE de índice grande afetarão o desempenho do sistema?

  • 16

Esta pergunta é sobre o desempenho do índice do SQL Server com um varchar(2000)índice INCLUDEde cobertura.

Estou tentando melhorar o desempenho em um aplicativo de banco de dados lento e instável. Em alguns casos, os dados são acessados ​​por meio de strings varchar grandes, com as consultas incluindo várias operações de string como SUBSTRING(), SPACE()e DATALENGTH(). Aqui está um exemplo simplificado de acesso;

update fattable set col3 =  
   SUBSTRING(col3,1,10) + '*' + 
   SUBSTRING(col3,12,DATALENGTH(col3)-12)
from fattable where substring(col3,10,1) = 'A' and col2 = 2

O esquema fica assim:

CREATE TABLE [dbo].[FatTable]( 
    [id] [bigint] IDENTITY(1,1) NOT NULL, 
    [col1] [nchar](12) NOT NULL, 
    [col2] [int] NOT NULL, 
    [col3] [varchar](2000) NOT NULL, ... 

O índice a seguir foi definido, com um campo de cobertura na coluna de texto grande.

CREATE NONCLUSTERED INDEX [IndexCol2Col3] ON [dbo].[FatTable]  ( [col2] ASC ) 
    INCLUDE( [col3] )

Pelo que li, é RUIM colocar grandes campos de dados em um índice. Tenho lido vários artigos, incluindo http://msdn.microsoft.com/en-us/library/ms190806.aspx , que discute o impacto da paginação e do tamanho do disco no desempenho do índice. Dito isto, o plano de consulta definitivamente usa o índice de cobertura. Não tenho informações suficientes para determinar quanto isso realmente está me custando em termos de carga do sistema. Eu sei que, no geral, o sistema está funcionando mal e estou preocupado que esse seja um dos problemas. Perguntas:

  • Colocar esta varchar(2000)coluna no índice INCLUDEé uma boa ideia?

  • Como os INCLUDEcampos são armazenados em nós folha, eles têm muito impacto no desempenho do índice?

Atualização: Obrigado pelas excelentes respostas! Esta é uma pergunta injusta de certa forma - como vocês dizem, não há resposta certa absoluta sem estatísticas e perfis reais. Como tantos problemas de desempenho, acho que a resposta é "depende".

sql-server sql-server-2008
  • 4 respostas
  • 4241 Views
Martin Hope
RaoulRubin
Asked: 2012-02-11 10:10:30 +0800 CST

Devo usar muitos índices de campo único, em vez de índices específicos de várias colunas?

  • 39

Esta pergunta é sobre a eficácia de uma técnica de indexação do SQL Server. Eu acho que é conhecido como "interseção de índice".

Estou trabalhando com um aplicativo existente do SQL Server (2008) que tem vários problemas de desempenho e estabilidade. Os desenvolvedores fizeram algumas coisas estranhas com a indexação. Não consegui obter benchmarks conclusivos sobre essas questões, nem encontrei nenhuma documentação realmente boa na internet.

Há muitas colunas pesquisáveis ​​em uma tabela. Os desenvolvedores criaram um índice de coluna única em CADA uma das colunas pesquisáveis. A teoria era que o SQL Server seria capaz de combinar (interseccionar) cada um desses índices para acessar a tabela com eficiência na maioria das circunstâncias. Aqui está um exemplo simplificado (a tabela real tem mais campos):

CREATE TABLE [dbo].[FatTable](
    [id] [bigint] IDENTITY(1,1) NOT NULL,
    [col1] [nchar](12) NOT NULL,
    [col2] [int] NOT NULL,
    [col3] [varchar](2000) NOT NULL, ...

CREATE NONCLUSTERED INDEX [IndexCol1] ON [dbo].[FatTable]  ( [col1] ASC )
CREATE NONCLUSTERED INDEX [IndexCol2] ON [dbo].[FatTable] ( [col2] ASC )

select * from fattable where col1 = '2004IN' 
select * from fattable where col1 = '2004IN' and col2 = 4

Acho que vários índices de coluna direcionados aos critérios de pesquisa são muito melhores, mas posso estar errado. Eu vi planos de consulta que mostram o SQL Server fazendo uma correspondência de hash em duas buscas de índice. Talvez isso faça sentido quando você não sabe como a tabela é pesquisada? Obrigado.

sql-server sql-server-2008
  • 1 respostas
  • 31614 Views
Martin Hope
RaoulRubin
Asked: 2012-01-10 12:40:50 +0800 CST

Há algum risco em conceder aos usuários a permissão SHOWPLAN do SQL Server?

  • 26

Estou fazendo alguns ajustes de desempenho em um grande banco de dados SQL Server 2008 e o grupo de TI não está disposto a conceder permissão SHOWPLAN. No passado, "Mostrar Plano de Execução" era a maneira mais eficaz de entender o desempenho de consultas e procedimentos individuais.

Quais são os riscos inerentes à concessão dessa permissão? Existe uma justificativa legítima para essa restrição em uma cópia de desenvolvimento do banco de dados?

Observação: esse grupo de TI do SQL tem mais de 200 bancos de dados em uma única instância do SQL Server. Obrigado.

Resposta : Estou considerando a falta de resposta como significando que não há riscos de segurança significativos, além do indicado abaixo. Basicamente, restringir isso em um banco de dados de desenvolvimento é contraproducente.

Vou atualizar isso se alguém vier com uma resposta melhor. Obrigado por seus comentários!

sql-server sql-server-2008
  • 1 respostas
  • 20333 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve