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-3024

DamagedGoods's questions

Martin Hope
DamagedGoods
Asked: 2019-10-23 03:33:11 +0800 CST

Como determinar a configuração MAXDOP ao usar DTU no Azure SQL

  • 3

Tenho experiência anterior em definir configurações de MAXDOP para servidores OLTP e OLAP locais quando você sabe o número de núcleos à sua disposição. por exemplo, se eu soubesse que tinha 16 à minha disposição, eu definiria meu MAXDOP para 2 ou 4 para o meu sistema OLTP.

Acabei de ingressar em um projeto e observei que o banco de dados de produção principal está definido como MAXDOP de 1, proibindo quaisquer operações paralelas.

É um servidor dedicado (portanto, sem pool elástico) servidor Premium P11, portanto, as DTUs abstraem a quantidade exata de CPU e capacidade de memória. Sem poder dizer com quantos núcleos você está lidando, existe uma configuração inicial sensata? achando um pouco complicado portar as melhores práticas locais para o Azure SQL.

Os servidores de teste são uma configuração diferente com um pool elástico compartilhado, portanto, também não há uma maneira fácil de testar planos de execução específicos (especialmente porque tudo é escrito por meio do ORM do Entity Framework)

sql-server azure-sql-database
  • 2 respostas
  • 1728 Views
Martin Hope
DamagedGoods
Asked: 2016-07-14 13:17:34 +0800 CST

Compactação do MySQL no Google Cloud SQL

  • 0

Como o Google Cloud SQL é uma instância gerenciada do MySQL sob o capô, limitada a um máximo absoluto em máquinas de 2ª geração de 100 GB de RAM, devo compactar alguns dos meus dados de tabela e índice? Estou projetando um sistema global, portanto, eventualmente, o conjunto de trabalho provavelmente excederá os 100 GB.

Anteriormente, obtive melhorias de desempenho compactando tabelas e índices em sistemas SQL Server e Oracle que estavam vinculados à memória.

Sou novo no GCP e, consequentemente, no MySQL. O uso de compressão ainda se aplicaria neste caso? existem funções ou procedimentos (como a compressão_estimativa no SQL Server) que posso executar para avaliar se uma tabela ou índice se beneficiará da compactação?

mysql compression
  • 1 respostas
  • 638 Views
Martin Hope
DamagedGoods
Asked: 2015-06-13 03:22:07 +0800 CST

Inicialização instantânea de arquivo no Windows Oracle Server

  • 0

Preciso adicionar arquivos de dados adicionais a um tablespace SmallFile. O processo levou vários minutos no meu sistema para 1 arquivo de dados.

É possível permitir ao Oracle a mesma capacidade do SQL Server usando a inicialização instantânea de arquivo? meu googling foi improdutivo.

Obrigado,

cris

oracle-11g-r2 tablespaces
  • 1 respostas
  • 32 Views
Martin Hope
DamagedGoods
Asked: 2013-01-17 07:02:44 +0800 CST

O instantâneo não seleciona novos artigos na replicação de transação do SQL Server 2012 quando adicionado por meio de script

  • 3

Estou tentando adicionar novos artigos a uma publicação existente no SQL Server 2012.

Estou adicionando o artigo à publicação com a sintaxe

--add the table into the correct publication
sp_addarticle @publication='<publicationname>', @article='CardBookingType_tbl', @source_object='CardBookingType_tbl'

Anteriormente, no SQL Server 2008, eu costumava usar a seguinte sintaxe para assinar apenas 1 tabela e, em seguida, executar o instantâneo. Isso não funciona mais no SQL 2012, pois você precisa assinar todos os artigos.

--add the table into the subscription
EXEC sp_addsubscription
        @publication = '<publicationname>',
        @subscriber = '<Servername>',
        @destination_db = '<dbname>'

GO

No SQL Server 2012, se eu adicionar a tabela por meio da GUI e, em seguida, executar o agente de instantâneo, ele selecionará a nova tabela. Mas se eu adicionar por meio do script, ele aparecerá no gui, mas o instantâneo relata que nenhum novo item foi detectado.

Parece que estou perdendo um pedaço de código para sinalizar os assinantes como faltando um artigo?

sql-server-2012 snapshot
  • 3 respostas
  • 3593 Views
Martin Hope
DamagedGoods
Asked: 2013-01-10 06:06:56 +0800 CST

Ok para descartar índices em FK's se eles não tiverem estatísticas no DMVS

  • 6

Usei a conhecida consulta abaixo de Kevin Kline para verificar índices não utilizados. Vários índices criados em chaves estrangeiras não retornam estatísticas de leitura, apenas gravações.

Você está 100% seguro para descartar esses índices? ou eles poderiam ser usados ​​pelo otimizador para, digamos, inserções ou exclusões e não registrariam nenhuma estatística no DMV? em caso afirmativo, como se pode dizer que eles são 100% seguros para remover?

O servidor está em execução há 2 meses, então tenho certeza de que cobri nosso ciclo de carga de trabalho mensal.

    SELECT o.name
    , indexname=i.name
    , i.index_id   
    , reads=user_seeks + user_scans + user_lookups   
    , writes =  user_updates   
    , rows = (SELECT SUM(p.rows) FROM sys.partitions p WHERE p.index_id = s.index_id AND s.object_id = p.object_id)
    , CASE
        WHEN s.user_updates < 1 THEN 100
        ELSE 1.00 * (s.user_seeks + s.user_scans + s.user_lookups) / s.user_updates
      END AS reads_per_write
    , 'DROP INDEX ' + QUOTENAME(i.name) + ' ON ' + QUOTENAME(c.name) + '.' + QUOTENAME(OBJECT_NAME(s.object_id)) as 'drop statement'
    FROM sys.dm_db_index_usage_stats s  
    INNER JOIN sys.indexes i ON i.index_id = s.index_id AND s.object_id = i.object_id   
    INNER JOIN sys.objects o on s.object_id = o.object_id
    INNER JOIN sys.schemas c on o.schema_id = c.schema_id
    WHERE OBJECTPROPERTY(s.object_id,'IsUserTable') = 1
    AND s.database_id = DB_ID()   
    AND i.type_desc = 'nonclustered'
    AND i.is_primary_key = 0
    AND i.is_unique_constraint = 0
    AND (SELECT SUM(p.rows) FROM sys.partitions p WHERE p.index_id = s.index_id AND s.object_id = p.object_id) > 2000
    ORDER BY  name, reads
index sql-server-2012
  • 1 respostas
  • 197 Views
Martin Hope
DamagedGoods
Asked: 2012-11-29 03:59:58 +0800 CST

Dividir por zero fazendo com que a transação de erro falhe com Arthimetic Abort e ANSI WARNINGS FALSE após a atualização

  • 2

Esta é uma questão estranha..

Estamos recebendo erros de divisão por zero que estão fazendo com que o SQL Server encerre a transação e bloqueie o site de teste.

Abort aritmético é definido como FALSE junto com avisos ANSI e todos os outros padrões... Nenhuma alteração de código ocorreu, portanto, também não está explicitamente definida no código.

Isso está acontecendo apenas na maioria dos bancos de dados no servidor que contêm dados muito semelhantes e os mesmos metadados, mas não em todos.

Isso começou a acontecer depois que realizei uma atualização local de nosso servidor de teste de 2008 para 2012. (o problema ocorre em ambos os modos de compatibilidade)

Se eu transformar ARITHMETICABORT explicitamente em falso dentro da janela de consulta, ele funcionará bem ... algo parece estar ignorando as configurações amplas do banco de dados. isso acontece de dentro do estúdio de gerenciamento ou do código

aqui está o primeiro trecho de código em que o detectamos, para referência, mas acho que isso não está relacionado ao código

    SELECT  sm.MarkupId, sm.WebSiteCode, sm.CurrencyCode, sm.OfferTitle, sm.Priority, sm.MarkupPercent, sm.MarkupDownAmount, sm.Cumulative,
            sm.AllowAdditionalDiscounts, sm.StartDate, sm.EndDate, sm.DayOfWeek, sm.StartTime, sm.EndTime, sm.DepartureStartDate, sm.DepartureEndDate,
            ISNULL(s.name, '') AS Supplier, ISNULL(s.Supplierid, '') AS SupplierId, ISNULL(sb.CommissionPercent, 0) AS CommissionPercent, eg.Title AS EstabGroup,
            d.DomainName, sm.DurationFrom, sm.DurationTo, sm.BookingTotalFrom, sm.BookingTotalTo,
            ActualCommission = CASE WHEN ISNULL(sb.CommissionPercent, 0) = 0 THEN CAST(( ( sm.MarkupPercent - 100 ) / sm.MarkupPercent ) * 100 AS DECIMAL(18, 2))
                                    ELSE ROUND(ISNULL(sb.CommissionPercent, 0) - ( 100.0 - sm.MarkupPercent ), 2)
                               END, sm.BoardTypeId, BoardTitle = ISNULL(b.Title, '')
    FROM    SupplierMarkup_tbl sm
            INNER JOIN Domain_tbl d ON d.DomainId = sm.DomainId
            LEFT JOIN Supplier_tbl s ON sm.SupplierId = s.SupplierId
            LEFT JOIN acomEstabGroup_tbl eg ON sm.EstabGroupId = eg.EstabGroupId
            LEFT JOIN SupplierBookedItemType_tbl sb ON sb.SupplierId = s.SupplierId
                                                       AND sb.WebsiteCode = sm.WebSiteCode
                                                       AND sb.BookedItemTypeId = 17
            LEFT JOIN acomBoardType_tbl b ON b.BoardTypeId = sm.BoardTypeId
    WHERE   1 = 1
    UNION
    SELECT  CASE WHEN cm.IsExtranet = 1
                      AND cm.GrossAdjustment = 1 THEN -2
                 WHEN cm.IsExtranet = 1
                      AND cm.NetAdjustment = 1 THEN -1
                 ELSE 0
            END AS MarkupId, '' AS WebSiteCode, '' AS CurrencyCode, mo.Title AS OfferTitle, -1 AS Priority, cm.MarkupPercent * 100 AS MarkupPercent,
            0 AS MarkupDownAmount, cm.Cumulative, cm.AllowAdditionalDiscounts, cm.StartDate, cm.EndDate, cm.DayOfWeek, cm.StartTime, cm.EndTime,
            cm.CheckInStartDate AS DepartureStartDate, cm.CheckInEndDate AS DepartureEndDate, ISNULL(s.name, '') AS Supplier, ISNULL(s.Supplierid, '') AS SupplierId,
            0 AS CommissionPercent, '' AS EstabGroup, d.DomainName, cm.DurationFrom, cm.DurationTo, cm.BookingTotalFrom, cm.BookingTotalTo, ActualCommission = 0,
            cm.BoardTypeId, BoardTitle = ISNULL(b.Title, '')
    FROM    conContractEstabMarkup_tbl cm
            INNER JOIN Domain_tbl d ON d.DomainId = cm.DomainId
            LEFT JOIN Supplier_tbl s ON s.SupplierId = 97
            LEFT JOIN acomBoardType_tbl b ON b.BoardTypeId = cm.BoardTypeId
            LEFT JOIN dbo.MarkupOffer_tbl mo ON mo.MarkupOfferId = cm.MarkupOfferId
    WHERE   cm.EstabId IS NULL
            AND cm.Deleted = 0
    ORDER BY Priority, Supplier

Esta não é estritamente uma resposta, pois não sei dizer por que isso aconteceria, mas encontrei a causa raiz. Espero que alguém possa me dizer por que esse comportamento acontece ou se é um bug?

O erro acontece quando a 2ª instrução após UNION não retorna nenhuma linha.

fazia tempo que não via um assim!

sql-server-2012
  • 1 respostas
  • 603 Views
Martin Hope
DamagedGoods
Asked: 2012-11-27 17:10:45 +0800 CST

As atualizações in-loco do SQL Server são tão desaconselhadas quanto costumavam ser?

  • 81

Eu tenho trabalhado com o SQL Server dentro e fora desde o SQL Server 6.5, o velho conselho que ainda soa na minha cabeça era nunca fazer uma atualização in-loco.

Atualmente estou atualizando meus sistemas 2008 R2 DEV e TEST para SQL Server 2012 e preciso usar o mesmo hardware. A ideia de não ter que restaurar a configuração do meu Reporting Services é muito atraente e estou realmente contra a parede em termos de tempo. Não há serviços de análise envolvidos ou qualquer coisa incomum ou fora do padrão - apenas o mecanismo de banco de dados e os serviços de relatórios são instalados.

Alguém já teve problemas sérios com atualizações in-loco? Ou devo reavaliar minha posição sobre atualizações no local?

sql-server sql-server-2012
  • 5 respostas
  • 27846 Views
Martin Hope
DamagedGoods
Asked: 2012-11-23 05:18:07 +0800 CST

usando a coluna IDENTITY com incremento -1

  • 4

Eu preciso executar um banco de dados de log do servidor SQL com 2 tabelas principais em 2 datacenters separados gravando em ambos ao mesmo tempo.

Tive a ideia de restaurar o banco de dados para o novo datacenter e, em seguida, propagar novamente a coluna de identidade para -1 e definir o incremento para -1, dessa forma nunca haveria chance de duplicar id's quando os dados precisassem ser combinados. DATACENTRE1 seriam inteiros positivos, DATACENTRE2 inteiros negativos

um incremento de -1 causaria algum problema?

sql-server database-design
  • 6 respostas
  • 10769 Views
Martin Hope
DamagedGoods
Asked: 2012-11-04 04:39:19 +0800 CST

replicação transacional, falhando com falha no link de comunicação no meio do bcp

  • 4

Estou tentando replicar para um 4º assinante em um site remoto. 3 assinantes funcionam bem localmente. a outra diferença é que este é um assinante de 2012 de um editor e distribuidor remoto de 2008 r2.

Ao entregar os comandos bcp, ele falha com o seguinte erro.

O processo não pôde copiar em massa para a tabela '"dbo".."FlightSchedule_tbl"'. (Fonte: MSSQL_REPL, Número do erro: MSSQL_REPL0)

Eu tentei aumentar o nível historyverbose para 2, mas este é o único erro que recebo do histórico do agente. Tentei recriar o instantâneo, mas ainda falha no mesmo ponto...

nada incomum sobre a tabela e seus 5 milhões de linhas, portanto, não há grandes quantidades de dados ...

Column_name Type    Computed    Length
FlightId    int no  4
OrigAirport char    no  3
DestAirport char    no  3
DeptDate    datetime    no  8
ArriveDate  datetime    no  8
Airline char    no  10
SupplierId  int no  4
UpdateRef   int no  4
HarvestUpdateKey    int no  4
ActiveFlag  bit no  1

Alguém pode me ajudar a diagnosticar isso para obter um erro útil ou sugerir qual pode ser o problema? a conexão é muito lenta para este datacenter, que é um problema que estamos tentando resolver... isso poderia ser simplesmente um tempo limite ???

ATUALIZAÇÃO - configurei uma publicação separada com apenas esta tabela e defina o registro detalhado como 2. Em seguida, obtenho

Mensagens de erro:
O processo não pôde copiar em massa para a tabela '"dbo"."FlightSchedule_tbl"'. (Fonte: MSSQL_REPL, Número do erro: MSSQL_REPL0)

Uma conexão existente foi encerrada à força pelo host remoto.
Erro não especificado
Falha ao enviar lote após erros máximos
Provedor TCP: uma conexão existente foi encerrada à força pelo host remoto. (Fonte: MSSQLServer, Número do erro: 10054)

Falha no link de comunicação (Fonte: MSSQLServer, Número do erro: 10054)

assim se parece com a rede entre datacenters... estranho que morresse sempre no mesmo ponto, haveria uma razão para isso?

O log de erros no servidor de destino
Erro: 4014, Gravidade: 20, Estado: 13
Ocorreu um erro fatal ao ler o fluxo de entrada da rede. A sessão será encerrada (erro de entrada: 64, erro de saída: 0).

sql-server-2008 sql-server-2012
  • 2 respostas
  • 4093 Views
Martin Hope
DamagedGoods
Asked: 2012-09-20 04:01:23 +0800 CST

tempo limite na atualização de nvarchar (max) após a conversão do tipo de dados

  • 0

Recentemente, atualizei para o 2008 Enterprise e aproveitei para alterar a maior tabela do meu banco de dados com a janela de manutenção.

executei o seguinte para alterar meu campo ntext

ALTER TABLE acomEstabLocale_tbl ALTER COLUMN [description] nvarchar(MAX)
GO
update acomEstabLocale_tbl set [description] = [description]

quando executei a segunda declaração, obtive o seguinte

length of LOB data (77404) to be replicated exceeds the exceeds configured maximum

ok, então depois de dar uma olhada eu encontrei o sp_configure e corri: -

EXEC sp_configure ‘max text repl size’, 100000

mas agora estou recebendo o seguinte

nvarchar max Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

Estou procurando estender temporariamente esse período de tempo limite de consulta, isso pode ser feito apenas usando a configuração de tempo limite de consulta remota nas propriedades do servidor? ou existe uma instrução T-SQL apenas para esta consulta

sql-server sql-server-2008
  • 1 respostas
  • 1819 Views
Martin Hope
DamagedGoods
Asked: 2012-08-24 08:12:08 +0800 CST

Removendo a fragmentação física

  • 2

Se eu herdei o banco de dados que cresceu para 400 GB, 1 MB de cada vez. Uma desfragmentação offline é a única maneira de remover toda a fragmentação física. Outro problema que tenho é que os arquivos de dados e log estão misturados e nas unidades RAID erradas.

Posso matar 2 coelhos com 1 pedra fazendo backup do banco de dados, excluí-lo e restaurá-lo usando WITH MOVE para colocar os arquivos nas unidades RAID corretas. Isso eliminará a fragmentação física?

sql-server fragmentation
  • 2 respostas
  • 399 Views
Martin Hope
DamagedGoods
Asked: 2012-08-09 02:12:08 +0800 CST

Replicação transacional de milhões de atualizações

  • 1

Tenho configuração de replicação transacional padrão de 2005 a 4 2008 assinantes. Uma das tabelas que é replicada é atualizada várias vezes a partir de um trabalho de agente, resultando em 6 milhões de declarações de atualizações todas as manhãs, o que está causando enormes cadeias de impasse nos assinantes.

Acho que a resolução é mudar isso para replicar apenas uma chamada de procedimento armazenado? Eu simplesmente tenho que adicionar o novo procedimento armazenado na publicação e adicionar o artigo no assinante?

Eu tentei isso porque ainda parece estar transmitindo todas as instruções de atualização, adicionei as propriedades do artigo para replicar a chamada do procedimento armazenado também, mas ainda vendo todas as linhas no monitor de replicação

sql-server-2005 stored-procedures
  • 1 respostas
  • 214 Views
Martin Hope
DamagedGoods
Asked: 2012-07-26 08:16:37 +0800 CST

Instantâneo de replicação transacional bloqueando o banco de dados do editor desde o início

  • 2

Recentemente, atualizei meu distribuidor remoto para 2008r2. Estou obtendo bloqueios completos do sistema ao tentar gerar um novo instantâneo no dia em que adicionamos um artigo à publicação (poderíamos fazer isso no passado com muito poucos problemas).

Eu verifiquei sp_Helppublicatione estamos usando o método de sincronização 3 (concorrente), portanto, nenhum bloqueio deve ser mantido até o final.

Tenho tentado seguir este link porque estou apenas adicionando uma tabela adicional com 26 linhas, mas não quero reinicializar e ter todo o instantâneo entregue.

http://deepakrangarajan.blogspot.co.uk/2009/01/sql-2005-transaction-replication-adding.html

Eu tentei executar este código

EXEC sp_changepublication
@publication = 'statics',
@property = N'immediate_sync',
@value = 'false'
GO 

mas isso também está bloqueando o sistema completamente. Acho que terei que executar no meio da noite, mas pensei que você poderia executar isso apenas como uma alteração de configuração na publicação.

Além disso, quando tento a última etapa no link para adicioná-lo à assinatura

EXEC sp_addsubscription  
@publication = 'statics',  
@article = 'dbo.SupplierCorporatePayAccountLink_tbl',  
@subscriber = 'PEARLJAM',  
@destination_db = 'MLT-Replicated',  
@reserved='Internal'

Eu recebi a seguinte mensagem de erro

Msg 14058, nível 16, estado 1, procedimento sp_MSrepl_addsubscription_article, linha 331 Não é possível criar a assinatura porque ela já existe no banco de dados de assinaturas. Apenas uma assinatura para a mesma publicação é permitida em cada banco de dados de assinatura. Elimine a assinatura e adicione-a novamente, se necessário. Se o problema persistir, os metadados de replicação podem estar incorretos; consulte os Manuais Online para obter informações sobre solução de problemas.

Após o instantâneo, como posso adicionar o novo artigo ao assinante?

sql-server replication
  • 3 respostas
  • 3366 Views
Martin Hope
DamagedGoods
Asked: 2012-07-20 04:32:18 +0800 CST

Devo adicionar SET NOCOUNT ON a todos os meus gatilhos?

  • 21

É de conhecimento comum que você deve ter

SET NOCOUNT ON   

por padrão ao criar novos procedimentos armazenados.

A Microsoft alterou o modelo padrão para incluir isso em 2012. Achei que deveria ser o mesmo para gatilhos, mas não está incluído no modelo.

Isso é intencional ou apenas um descuido?

sql-server t-sql
  • 1 respostas
  • 14966 Views
Martin Hope
DamagedGoods
Asked: 2012-07-05 06:44:52 +0800 CST

Todas as assinaturas pull não podem se conectar ao Distribuidor

  • 3

recentemente, todas as minhas assinaturas PULL têm esta mensagem no status de sincronização. :-

O processo não pôde se conectar ao Distribuidor 'DISTRIBUTIONDB'

Isso só está acontecendo com as assinaturas PULL. Tentei reinicializar com um novo instantâneo, mas a mensagem permanece.

ao tentar consultar o histórico, sugere que o trabalho do agente não existe. Então eu removi e recriei a assinatura e o trabalho de um script T-SQL. monitor agora sugere que o trabalho não existe, mas quando executo o código T-sql sp_addpullsubscription no assinante, recebo

Msg 21002, Nível 11, Estado 1, Procedimento sp_addpullsubscription_agent, Linha 250 O Distribution Agent para esta assinatura já existe (YAZOO-MLT-Statics-KINKS-MLT-Replicated-94CD221C-4F8E-4732-8738-A6101E9D571B).

sql-server replication
  • 2 respostas
  • 14927 Views
Martin Hope
DamagedGoods
Asked: 2012-07-03 02:53:10 +0800 CST

Chaves estrangeiras de indexação do servidor SQL, abrangendo índices incluídos nas colunas

  • 6

Extraí uma lista de FKs que não possuem índices.

Se um FK não tiver um índice dedicado neles, mas fizer parte de índices mais amplos usados ​​para cobrir consultas, eles devem ter um índice dedicado criado?

por exemplo mytable abaixo é uma tabela de 20 colunas com um varchar(255) e o resto ints, datetime ou smallints.

está faltando índices em

AdvertiserId  
Dirty  
MasterAdGroupId

AdvertiserID sem um índice de chave estrangeira, mas [advertiserID] faz parte de um índice com [dirty]&[error] que são smallints. Isso deve ter seu próprio índice dedicado?

Devo remover alguns desses índices e combiná-los com colunas incluídas? então ter índices dedicados para minhas chaves estrangeiras?

    index_keys  
    -------------
    [AdvertiserAdGroupId]
    [AdvertiserHierarchyId]
    [AdvertiserHierarchyId], [AdvertiserAdGroupId], [MasterAdGroupId]
    [AdvertiserAdGroupCode]
    [AdvertiserAdGroupId], [MasterAdGroupId], [AdvertiserId]
    [AdvertiserId], [Dirty], [Error]
    [MasterAdGroupId], [Deleted], [AdvertiserAdGroupId]
    [AdvertiserHierarchyId], [Error], [AdvertiserAdGroupId], [MasterAdGroupId], [Deleted]
    [Error], [AdvertiserHierarchyId], [Dirty], [AdvertiserAdGroupId]
    [MasterAdGroupId], [AdvertiserAdGroupId], [AdvertiserHierarchyId]
    [AdvertiserId], [AdvertiserAdGroupCode], [LastSyncedDate], [CreatedDate]
    [AdvertiserId], [Deleted], [Paused], [AdvertiserAdGroupCode]
sql-server index-tuning
  • 3 respostas
  • 3942 Views
Martin Hope
DamagedGoods
Asked: 2012-06-21 02:17:35 +0800 CST

Operadores bit a bit afetando o desempenho

  • 3

Recentemente, vi alguns procedimentos armazenados vindo em minha direção que contêm operadores BITWISE que estão causando problemas ao otimizador. Sei, por brincar com os planos de execução, que essa é a causa do problema, mas não tenho 100% de certeza do raciocínio. Isso ocorre porque o curto-circuito não funciona como linguagens procedurais. Com o SQL server então avalia tudo na WHEREclausula ao mesmo tempo e é forçado a escanear a tabela inteira?

Em anexo está um trecho de código de dentro do proc, alterei um pouco para teste. Como posso reescrever isso para remover o bitwise?

DECLARE
@AdvertiserId INT, 
@DirtyReason INT

SET @advertiserid = 3
SET @dirtyreason = 7

BEGIN


SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 

   --DROP TABLE #temparraytable;

CREATE TABLE #tempArrayTable (advertiserHierarchyId int)
    INSERT INTO #tempArrayTable (advertiserHierarchyId)
    (SELECT convert(int,str) FROM dbo.SplitString('14167',','))

CREATE INDEX #ix_tempArrayTable ON #tempArrayTable  (advertiserHierarchyId)

        SELECT DISTINCT MA.ContentNetwork,MA.DestinationURL, MA.MasterAdGroupId, AA.Title, MA.ShortTitle, ma.LinkedObjectId, ma.LinkedObjectTypeId, MA.MasterHierarchyId, 
                AA.AdvertiserAdGroupId, AA.AdvertiserId, AA.AdvertiserHierarchyId, AdvertiserAdGroupCode, AA.AdvertiserHierarchyId, AA.Dirty, 
                AA.Deleted, AA.Paused, MA.MatchTypeId,
                lob.MaxCostPerClick AS 'LinkedObjectROIMAXCPC'                     
          FROM admanMasterAdGroup_tbl MA  
    INNER JOIN admanAdvertiserAdGroup_tbl AA  ON MA.MasterAdGroupId = AA.MasterAdGroupId 
        INNER JOIN admanAdvertiserCreative_tbl AC ON AA.AdvertiserAdGroupId = AC.AdvertiserAdGroupId 
        INNER JOIN admanAdvertiserHierarchy_tbl AH ON AA.AdvertiserHierarchyId = AH.AdvertiserHierarchyId 
        INNER JOIN #tempArrayTable tat ON tat.advertiserHierarchyId = AA.AdvertiserHierarchyId
    LEFT JOIN admanLinkedObjectROIBid_tbl lob ON lob.LinkedObjectId = ma.LinkedObjectId AND lob.LinkedObjectTypeId = ma.LinkedObjectTypeId AND lob.AdvertiserId = @AdvertiserId
        WHERE AA.AdvertiserId = @AdvertiserId 
          **AND (AC.Dirty & @dirtyReason > 0)**
      AND NOT (AC.Deleted = 1 AND AC.AdvertiserCreativeCode IS NULL) 
          AND AA.AdvertiserAdGroupCode IS NOT NULL 
          AND AA.Error = 0 
          AND AC.Error = 0 

        SELECT  MCH.Headline,MCH.Duplicate,MCH.MasterCreativeHeadlineId, MCB.MasterCreativeBodyId, 
                ACI.AdvertiserCreativeInstanceId,ACI.ActualLine1,ACI.ActualLine2,ACI.ActualHeadline,ACI.ActualDisplayURL,ACI.ActualDestinationURL, MCU.MasterCreativeURLId, MCH.Rank,  
                MCB.Line1, 
                MCB.Line2, AA.MasterAdGroupId, AdvertiserCreativeId, 
                AA.AdvertiserAdGroupId, AC.Dirty, AC.Deleted, AC.Paused, MCU.DisplayURL,AA.AdvertiserId, AC.AdvertiserCreativeCode,  
                MCH.CreativeHeadlineTemplateId, MCB.CreativeBodyTemplateId, MCU.CreativeURLTemplateId, CBT.CreativeTemplateGroupId  
           FROM admanAdvertiserCreative_tbl AC  
     INNER JOIN admanMasterCreativeHeadline_tbl MCH  ON AC.MasterCreativeHeadlineId = MCH.MasterCreativeHeadlineId 
     INNER JOIN admanAdvertiserCreativeInstance_tbl ACI  ON AC.AdvertiserCreativeInstanceId = ACI.AdvertiserCreativeInstanceId 
     INNER JOIN admanMasterCreativeBody_tbl MCB  ON MCB.MasterCreativeBodyId = AC.MasterCreativeBodyId 
     INNER JOIN admanMasterCreativeURL_tbl MCU  ON AC.MasterCreativeURLId = MCU.MasterCreativeURLId 
     INNER JOIN admanAdvertiserAdGroup_tbl AA  ON AC.AdvertiserAdGroupId = AA.AdvertiserAdGroupId 
     INNER JOIN admanAdvertiserHierarchy_tbl AH  ON AA.AdvertiserHierarchyId = AH.AdvertiserHierarchyId 
     INNER JOIN admanCreativeBodyTemplate_tbl CBT  ON CBT.CreativeBodyTemplateId = MCB.CreativeBodyTemplateId 
     INNER JOIN #tempArrayTable tat ON tat.advertiserHierarchyId = AA.AdvertiserHierarchyId
          WHERE AA.AdvertiserId = @AdvertiserId 
           **AND (AC.Dirty & @dirtyreason > 0)**  
           AND NOT (AC.Deleted = 1 AND AC.AdvertiserCreativeCode IS NULL) 
           AND AA.AdvertiserAdGroupCode IS NOT NULL 
           AND AA.Error = 0 
           AND AC.Error = 0 
      ORDER BY AC.Deleted desc, AC.AdvertiserAdGroupId,AC.AdvertiserCreativeId asc 

END;

BEGIN

DROP TABLE #temparraytable2;
CREATE TABLE #tempArrayTable2 (advertiserHierarchyId int)
INSERT INTO #tempArrayTable2 (advertiserHierarchyId)
    (SELECT convert(int,str) FROM dbo.SplitString('14167',','))
CREATE INDEX #ix_tempArrayTable ON #tempArrayTable2 (advertiserHierarchyId)

        SELECT DISTINCT MA.ContentNetwork,MA.DestinationURL, MA.MasterAdGroupId, AA.Title, MA.ShortTitle, ma.LinkedObjectId, ma.LinkedObjectTypeId, MA.MasterHierarchyId, 
                AA.AdvertiserAdGroupId, AA.AdvertiserId, AA.AdvertiserHierarchyId, AdvertiserAdGroupCode, AA.AdvertiserHierarchyId, AA.Dirty, 
                AA.Deleted, AA.Paused, MA.MatchTypeId,
                lob.MaxCostPerClick AS 'LinkedObjectROIMAXCPC'                     
          FROM admanMasterAdGroup_tbl MA  
    INNER JOIN admanAdvertiserAdGroup_tbl AA  ON MA.MasterAdGroupId = AA.MasterAdGroupId 
        INNER JOIN admanAdvertiserCreative_tbl AC ON AA.AdvertiserAdGroupId = AC.AdvertiserAdGroupId 
        INNER JOIN admanAdvertiserHierarchy_tbl AH ON AA.AdvertiserHierarchyId = AH.AdvertiserHierarchyId 
        INNER JOIN #tempArrayTable2 tat ON tat.advertiserHierarchyId = AA.AdvertiserHierarchyId
    LEFT JOIN admanLinkedObjectROIBid_tbl lob ON lob.LinkedObjectId = ma.LinkedObjectId AND lob.LinkedObjectTypeId = ma.LinkedObjectTypeId AND lob.AdvertiserId = @AdvertiserId
        WHERE AA.AdvertiserId = @AdvertiserId 
          **AND (AC.Dirty > 0 AND @dirtyReason > 0)**
      AND NOT (AC.Deleted = 1 AND AC.AdvertiserCreativeCode IS NULL) 
          AND AA.AdvertiserAdGroupCode IS NOT NULL 
          AND AA.Error = 0 
          AND AC.Error = 0 

        SELECT  MCH.Headline,MCH.Duplicate,MCH.MasterCreativeHeadlineId, MCB.MasterCreativeBodyId, 
                ACI.AdvertiserCreativeInstanceId,ACI.ActualLine1,ACI.ActualLine2,ACI.ActualHeadline,ACI.ActualDisplayURL,ACI.ActualDestinationURL, MCU.MasterCreativeURLId, MCH.Rank,  
                MCB.Line1, 
                MCB.Line2, AA.MasterAdGroupId, AdvertiserCreativeId, 
                AA.AdvertiserAdGroupId, AC.Dirty, AC.Deleted, AC.Paused, MCU.DisplayURL,AA.AdvertiserId, AC.AdvertiserCreativeCode,  
                MCH.CreativeHeadlineTemplateId, MCB.CreativeBodyTemplateId, MCU.CreativeURLTemplateId, CBT.CreativeTemplateGroupId  
           FROM admanAdvertiserCreative_tbl AC  
     INNER JOIN admanMasterCreativeHeadline_tbl MCH  ON AC.MasterCreativeHeadlineId = MCH.MasterCreativeHeadlineId 
     INNER JOIN admanAdvertiserCreativeInstance_tbl ACI  ON AC.AdvertiserCreativeInstanceId = ACI.AdvertiserCreativeInstanceId 
     INNER JOIN admanMasterCreativeBody_tbl MCB  ON MCB.MasterCreativeBodyId = AC.MasterCreativeBodyId 
     INNER JOIN admanMasterCreativeURL_tbl MCU  ON AC.MasterCreativeURLId = MCU.MasterCreativeURLId 
     INNER JOIN admanAdvertiserAdGroup_tbl AA  ON AC.AdvertiserAdGroupId = AA.AdvertiserAdGroupId 
     INNER JOIN admanAdvertiserHierarchy_tbl AH  ON AA.AdvertiserHierarchyId = AH.AdvertiserHierarchyId 
     INNER JOIN admanCreativeBodyTemplate_tbl CBT  ON CBT.CreativeBodyTemplateId = MCB.CreativeBodyTemplateId 
     INNER JOIN #tempArrayTable2 tat ON tat.advertiserHierarchyId = AA.AdvertiserHierarchyId
          WHERE AA.AdvertiserId = @AdvertiserId 
           **AND (AC.Dirty > 0 AND @dirtyreason > 0)**
           AND NOT (AC.Deleted = 1 AND AC.AdvertiserCreativeCode IS NULL) 
           AND AA.AdvertiserAdGroupCode IS NOT NULL 
           AND AA.Error = 0 
           AND AC.Error = 0 
      ORDER BY AC.Deleted desc, AC.AdvertiserAdGroupId,AC.AdvertiserCreativeId asc 

END
sql-server t-sql
  • 1 respostas
  • 3206 Views
Martin Hope
DamagedGoods
Asked: 2012-06-15 01:12:23 +0800 CST

SQL Server Log shipping standby db travado restaurando

  • 2

Eu tenho 2 servidores no SQL Server 2005 SP4. Quando o servidor secundário alcança os arquivos de log, ele muda para o modo de espera, mas depois de um tempo parece estar 'travado' na restauração.

Havia algumas conexões e consultas abertas no banco de dados, mas agora foram encerradas. As tarefas de cópia e restauração estão funcionando bem, mas não estão sendo colocadas em espera. Não consigo ver nenhuma transação no dmvs.

Posso tentar restaurar manualmente o banco de dados com a opção STANDBY para colocá-lo em espera? ou isso interromperá o envio de log (precisa ter cuidado com o instantâneo de 300 GB de um site ativo)

ou há mais alguma coisa que eu preciso verificar para tarefa, etc bloqueando a mudança para o modo de espera ..

Felicidades

sql-server-2005 log-shipping
  • 1 respostas
  • 4242 Views
Martin Hope
DamagedGoods
Asked: 2011-09-13 07:52:27 +0800 CST

Reindexando Índices de Tabelas Particionadas

  • 1

Servidor de relatórios históricos executando SQL 2008 R2.

Estou tentando ajustar o fator de preenchimento. Eu tenho um trabalho que registra a fragmentação quando os trabalhos são executados nas primeiras horas.

Para cada tabela com alta fragmentação, reduzi o fator de preenchimento do padrão de 100% para índices específicos, o que funcionou bem. Mas minhas 3 maiores tabelas são particionadas.

Infelizmente, no SQL 2008 R2, você não pode alterar o fator de preenchimento em uma partição específica. A fragmentação na partição ativa é de 99% em vários desses índices quando a tarefa é executada.

Não quero aumentar todas as partições pois são enormes, já leva 150GB de 250GB db. Alguém tem alguma sugestão sobre uma solução alternativa ou devo esperar pelo próximo lançamento principal, esperando que essa omissão bastante grande na manutenção da tabela particionada seja corrigida.

sql-server-2008-r2 partitioning
  • 1 respostas
  • 2833 Views
Martin Hope
DamagedGoods
Asked: 2011-08-24 07:29:28 +0800 CST

O trabalho de reindexação do SQL Server 2008 R2 reorganizar travando

  • 5

No momento, estou enfrentando este trabalho travando em minha solução de manutenção noturna -

ALTER INDEX [PK_ThirdPartySettleCalled] ON [evo_archive].[dbo].[ThirdPartySettleCalled]
 REORGANIZE WITH (LOB_COMPACTION = ON)

uma reindexação completa da tabela funciona.

mas estou usando a solução incrível de Ola Hallengren como faço em vários sites que precisam de soluções de manutenção. http://ola.hallengren.com/Documentation.html e o trabalho fica parado no meio da noite.

Eu testei como uma única declaração de dentro do ssms com o mesmo resultado, sem erro, estou com um pouco de falta de ideias.

Alguém experimentou esse problema antes?

Sem bloqueio,

a tabela tem cerca de 300 milhões de linhas,

basicamente, digo 'preso' porque nenhum outro processo está sendo executado no servidor SQL e está se reorganizando há horas sem nenhum erro.

Está no mesmo estado com 25% de fragmentação ou praticamente 0% (testado após uma reconstrução completa do índice)

index sql-server-2008-r2
  • 1 respostas
  • 2710 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