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

jitbit's questions

Martin Hope
jitbit
Asked: 2022-09-14 06:59:35 +0800 CST

A pesquisa de texto completo não encontrará códigos postais "NNx" onde "x" é um dígito

  • 3

Eu tenho uma string com um código postal NN2 7DG. O SQL Server pode encontrar perfeitamente, 7DGmas não o NN2.

Minha lista de palavras de parada está vazia.

Olhei para as palavras-chave indexadas e NN2nem está lá, enquanto 7DGestá

-- list indexed keywords
SELECT * FROM sys.dm_fts_index_keywords (DB_ID('MyDatabase'), OBJECT_ID('MyTable'))

Sugestões?

sql-server full-text-search
  • 1 respostas
  • 85 Views
Martin Hope
jitbit
Asked: 2022-01-04 04:25:08 +0800 CST

SQL Server no Linux limita a configuração memorylimitmb

  • 0

Eu tenho uma máquina Ubuntu de 64 GiB com o SQL Server 2017 instalado. A configuração memory.memorylimitmbpara qualquer valor superior a 63695 megabytes é ignorada. Configurá-lo para 67.000 megabytes (que é aproximadamente 62,3 GiB) ainda resulta em SSMS relatando 63.695 MB disponíveis (servidor de clique com o botão direito do mouse, propriedades - geral - linha de memória). As configurações mais baixas são refletidas lá muito bem.

Isso faz com que o SQL Server não use toda a memória disponível, ele usa apenas 59,2, deixando mais de 4 GB vazios.

Novamente, este é o meu "mssql.conf":

[memory]
memorylimitmb = 67000

Mas esta é a quantidade de memória relatada pelo SSMS:

insira a descrição da imagem aqui

(nota: esta NÃO é a configuração de "memória máxima", é aqui que o SSMS simplesmente diz quanta memória está instalada na máquina, em "Servidor - Propriedades - Geral - Memória")

sql-server linux
  • 1 respostas
  • 107 Views
Martin Hope
jitbit
Asked: 2019-10-10 02:23:54 +0800 CST

O SQL Server continua revertendo para o plano ineficiente (Verificação de índice clusterizado) uma vez por semana

  • 4

Tenho uma consulta muito simples:

INSERT INTO #tmptbl
SELECT TOP 50 CommentID --this is primary key
FROM Comments WITH(NOLOCK)
WHERE UserID=@UserID
ORDER BY CommentID DESC

contra esta tabela:

CREATE TABLE [dbo].[Comments] (
    [CommentID] int IDENTITY (1, 1) NOT NULL PRIMARY KEY,
    [CommentDate] datetime NOT NULL DEFAULT (getdate()),
    [UserID] int NULL ,
    [Body] nvarchar(max) NOT NULL,
--a couple of other int and bit cols, no indexes on them
)

Eu tenho um índice simples na UserIDcoluna (sem colunas incluídas) e tudo funciona bem e super-rápido.

Mas uma vez a cada 5-8 dias, vejo tempos limite nessa parte do aplicativo. Então vou investigar no Query Store e vejo que o servidor para de usar meu índice e reverte para uma estúpida "varredura em cluster". Remover a tabela temporária não ajuda.

por que, meu Deus, por quê???

Para resolver isso - redefino o cache do plano para essa consulta específica (apenas para registro, veja como faço isso)

select plan_handle FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text (qs.[sql_handle]) AS qt
where text like '%SELECT TOP 50 CommentID FROM hdComments%'
--blahblahblah skipped some code
DBCC FREEPROCCACHE (@plan_handle)

E depois volta a funcionar normalmente.

Planos de execução: lento rápido

Estou coçando a cabeça há dias... Alguma idéia?

sql-server index
  • 3 respostas
  • 1277 Views
Martin Hope
jitbit
Asked: 2018-11-18 04:32:00 +0800 CST

Grupo de arquivos secundário apenas para índice de texto completo - reconstruir quando perdido

  • 2

Segue nossa configuração:

  1. Temos todos os nossos dados no grupo de arquivos PRIMARY

  2. Temos nosso índice de texto completo em outro grupo de arquivos SECUNDÁRIO que reside em uma unidade SSD muito rápida (mas muito não confiável). Por "não confiável", quero dizer - é uma unidade temporária do servidor de nuvem da Amazon (pode ser totalmente perdida em caso de reinicialização de emergência/falha de hardware).

O índice de texto completo não é crítico e estamos prontos para perdê-lo completamente, pois obviamente podemos reconstruí-lo do zero.

A questão é: existe uma maneira de reviver o banco de dados caso o grupo de arquivos secundário seja 100% perdido, sem passar pelo ciclo completo de backup/restauração? Tipo, basta excluir o grupo de arquivos perdido, recriá-lo e reconstruir o índice.

(Temos backups completos regulares de banco de dados, backups de log etc. etc. etc., para que possamos "restaurar até o momento", mas isso implica uma longa interrupção)

PS Além disso, qualquer opinião sobre a viabilidade de nossa abordagem seria muito apreciada.

sql-server backup
  • 1 respostas
  • 125 Views
Martin Hope
jitbit
Asked: 2017-10-29 11:31:51 +0800 CST

Comportamento inconsistente estranho da cláusula "IN" do SQL Server

  • 1

Pergunta 1:

select count(UserID)
from users
where UserID IN (select UserID from otherTable)

Devoluções: 178

Consulta 2: : (simplesmente alterado INpara NOT IN)

select count(UserID)
from users
where UserID NOT IN (select UserID from otherTable)

Devoluções: 0

Consulta 3: (remova a cláusula IN completamente)

select count(UserID)
from users

Retornos: 1047123 (mais de um milhão)

O que? Eu não posso... Mesmo...

A única explicação que tenho é meu banco de dados inconsistente/corrompido, tenho que rodar DBCC CHECKDB ou algo assim.

PS. UserIDé uma chave primária, então - sem enganos.

sql-server
  • 1 respostas
  • 92 Views
Martin Hope
jitbit
Asked: 2017-07-31 23:22:25 +0800 CST

O SQL Server limpa o cache do plano e as estatísticas de execução periodicamente

  • 27

Após atualizar o SQL Server 2014 para 2016, o servidor continua redefinindo os planos de execução em cache e dm*exibições (como dm_exec_query_stats) etc. a cada duas horas

Como se alguém executasse DBCC FREEPROCCACHEe DBCC DROPCLEANBUFFERSmanualmente (exceto por ninguém, isso acontece automaticamente).

O mesmo banco de dados funcionou bem no SQL Server 2014 e no Windows Server 2012, as coisas deram errado depois de mudar para o SQL Server 2016 (e o Windows Server 2016)

Coisas que verifiquei: o banco de dados não possui o sinalizador "fechamento automático". O servidor SQL está ad hoc optimizedconfigurado para true(pensei que ajudaria, não ajudou). O "repositório de consultas" está "desativado". O servidor tem 16 GB de memória.

Nada útil no "log do SQL Server" também. Apenas uma mensagem de backup semanal...

Eu também verifiquei este artigo https://learn.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-set-options (role para baixo até a seção "Exemplos" e logo acima it) há uma lista de situações em que o plano é liberado automaticamente. Nenhuma delas se aplica.

ATUALIZAR:

Infelizmente, nenhuma das sugestões ajudou. Conceder permissões LPIM, detectar e corrigir consultas não parametrizadas que geraram toneladas de planos para a mesma consulta, diminuindo a "memória máxima do servidor"... Os planos continuam sendo redefinidos aleatoriamente, de duas em duas horas a cada 5-10 minutos. Se o servidor estava "sob pressão de memória", como é que a versão 2014 estava funcionando bem na mesma máquina.

Aqui está a saída sp_Blitz conforme solicitado

**Priority 10: Performance**:

- Query Store Disabled - The new SQL Server 2016 Query Store feature has not been enabled on this database.

    * xxx


**Priority 50: Server Info**:

- Instant File Initialization Not Enabled  - Consider enabling IFI for faster restores and data file growths.


**Priority 100: Performance**:

- Resource Governor Enabled  - Resource Governor is enabled.  Queries may be throttled.  Make sure you understand how the Classifier Function is configured.


**Priority 120: Query Plans**:

- Implicit Conversion Affecting Cardinality - One of the top resource-intensive queries has an implicit conversion that is affecting cardinality estimation.

    * 

- Missing Index - One of the top resource-intensive queries may be dramatically improved by adding an index.

    * 

- RID or Key Lookups - One of the top resource-intensive queries contains RID or Key Lookups. Try to avoid them by creating covering indexes.

    * 

**Priority 170: File Configuration**:

- System Database on C Drive
    * master - The master database has a file on the C drive.  Putting system databases on the C drive runs the risk of crashing the server when it runs out of space.

    * model - The model database has a file on the C drive.  Putting system databases on the C drive runs the risk of crashing the server when it runs out of space.

    * msdb - The msdb database has a file on the C drive.  Putting system databases on the C drive runs the risk of crashing the server when it runs out of space.


**Priority 200: Backup**:

- MSDB Backup History Not Purged msdb - Database backup history retained back to Jun 10 2017  9:47PM


**Priority 200: Informational**:

- Backup Compression Default Off  - Uncompressed full backups have happened recently, and backup compression is not turned on at the server level. Backup compression is included with SQL Server 2008R2 & newer, even in Standard Edition. We recommend turning backup compression on by default so that ad-hoc backups will get compressed.


**Priority 200: Non-Default Server Config**:

- Agent XPs  - This sp_configure option has been changed.  Its default value is 0 and it has been set to 1.

- max server memory (MB)  - This sp_configure option has been changed.  Its default value is 2147483647 and it has been set to 15000.

- optimize for ad hoc workloads  - This sp_configure option has been changed.  Its default value is 0 and it has been set to 1.

- show advanced options  - This sp_configure option has been changed.  Its default value is 0 and it has been set to 1.

- xp_cmdshell  - This sp_configure option has been changed.  Its default value is 0 and it has been set to 1.


**Priority 200: Performance**:

- Buffer Pool Extensions Enabled  - You have Buffer Pool Extensions enabled, and one lives here: Z:\sql_buffer_pool.BPE. It's currently 60.00000000000 GB. Did you know that BPEs only provide single threaded access 8KB (one page) at a time?

- cost threshold for parallelism  - Set to 5, its default value. Changing this sp_configure setting may reduce CXPACKET waits.

**Priority 240: Wait Stats**:

- No Significant Waits Detected  - This server might be just sitting around idle, or someone may have cleared wait stats recently.

**Priority 250: Informational**:

- SQL Server Agent is running under an NT Service account  - I'm running as NT Service\SQLSERVERAGENT. I wish I had an Active Directory service account instead.

- SQL Server is running under an NT Service account  - I'm running as NT Service\MSSQLSERVER. I wish I had an Active Directory service account instead.

**Priority 250: Server Info**:

- Default Trace Contents  - The default trace holds 125 hours of data between Aug 19 2017 11:55AM and Aug 24 2017  4:59PM. The default trace files are located in: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Log

- Hardware  - Logical processors: 2. Physical memory: 15GB.

- Hardware - NUMA Config  - Node: 0 State: ONLINE Online schedulers: 2 Offline schedulers: 0 Processor Group: 0 Memory node: 0 Memory VAS Reserved GB: 29

- Locked Pages In Memory Enabled  - You currently have 12.02534484863 GB of pages locked in memory.

- Memory Model Unconventional  - Memory Model: LOCK_PAGES

- Server Last Restart  - Aug 20 2017 12:32PM

- Server Name  - xx

- Services
 - Service: SQL Full-text Filter Daemon Launcher (MSSQLSERVER) runs under service account NT Service\MSSQLFDLauncher. Last startup time: not shown.. Startup type: Manual, currently Running.

 - Service: SQL Server (MSSQLSERVER) runs under service account NT Service\MSSQLSERVER. Last startup time: Aug 20 2017 12:32PM. Startup type: Automatic, currently Running.

 - Service: SQL Server Agent (MSSQLSERVER) runs under service account NT Service\SQLSERVERAGENT. Last startup time: not shown.. Startup type: Automatic, currently Running.

- SQL Server Last Restart  - Aug 20 2017 12:33PM

- SQL Server Service  - Version: 13.0.4446.0. Patch Level: SP1. Edition: Enterprise Edition (64-bit). AlwaysOn Enabled: 0. AlwaysOn Mgr Status: 2

- Virtual Server  - Type: (HYPERVISOR)

- Windows Version  - You're running a pretty modern version of Windows: Server 2012R2 era, version 6.3


**Priority 254: Rundate**:

 - Captain's log: stardate something and something...
sql-server sql-server-2016
  • 3 respostas
  • 14223 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