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

Jordan Rieger's questions

Martin Hope
Jordan Rieger
Asked: 2017-02-11 10:33:56 +0800 CST

A pesquisa de texto completo do SQL Server pode tokenizar palavras dentro de palavras?

  • 2

Suponha que eu tenha o seguinte esquema e dados no SQL Server 2012:

create table Exclamations
(
    ID int not null primary key identity(1,1),
    Exclamation nvarchar(150) not null
);

insert into Exclamations(Exclamation) values
    ('Ohmygosh!'),
    ('Ohmygoodness!'),
    ('It''sabird!'),
    ('It''saplane!'),
    ('Whattheheck!'),
    ('Lookoutbelow!'),
    ('Whatintheworld?'),
    ('Isheforreal?'),
    ('Takeahike!');

create fulltext index on Exclamations(Exclamation) key index ID;

E suponha que eu queira fazer consultas de texto completo em minhas exclamações, mas quero poder consultar palavras dentro de palavras usando um índice de alta velocidade . Isso é possível? Talvez com um dicionário personalizado ou comportamento personalizado de quebra de palavras/limite?

Por exemplo, eu quero ser capaz de consultar a palavra "out" e fazer com que ela localize rapidamente a linha 6 ('Lookoutbelow!') sem ter que varrer todas as linhas usando um operador LIKE-ish. Isso também implica alguns falsos positivos, por exemplo, suponha que eu queira consultar a palavra "ele" e encontrar a linha #8 ('Isheforreal?'); a consulta também retornaria a linha #5 ('Whattheheck!'), pois contém a mesma substring "he". Isso está ok.

Observe que não preciso do tokenizer para indexar todas as combinações possíveis de caracteres. Não me importo se palavras sem sentido como 'sapl' na linha #4 não forem indexadas. Eu só preciso dele para tokenizar as palavras que ele já reconhece (e possivelmente algumas palavras adicionais que eu adicionaria, mas isso é apenas bom de se ter).

É importante especificar que, para os propósitos desta pergunta, não posso pré-analisar as exclamações para inserir limites óbvios de tokenização, como espaços, hífens ou pontos, antes de inserir no SQL Server. Eu quero saber se o SQL Server pode de alguma forma fazer isso sozinho.

EDIT : Depois de mais algumas leituras, parece que o que eu quero é geralmente chamado de tokenização de N-gram . Mas eu quero isso limitado a tokens que já estão presentes ou variantes de palavras no dicionário.

sql-server sql-server-2012
  • 1 respostas
  • 907 Views
Martin Hope
Jordan Rieger
Asked: 2015-06-18 15:13:35 +0800 CST

Conexão lenta ou tempo limite do SQL Server Management studio ao usar a autenticação do Windows

  • 29

Estou recebendo atrasos extremamente longos (10 ~ 30 segundos) no SQL Server Management Studio 2014 ao tentar se conectar a uma instância do SQL Server 2012 por TCP usando Windows Authentication . Isso acontece ao conectar o Pesquisador de Objetos ou uma nova janela de consulta em branco. Uma vez conectado, a execução de consultas é rápida. O problema não acontece quando eu me conecto usando a autenticação do SQL Server.

Meio Ambiente:

  • Windows 7, logado como usuário de domínio
  • Conexão TCP via endereço IP (não nome do host)
  • O servidor está em um local remoto conectado via VPN
  • Sem criptografia

Quando entrei no computador Windows 7 de um colega de trabalho com minha conta de domínio e me conectei ao mesmo SQL Server por meio da mesma VPN, não houve atraso. Quando o mesmo colega de trabalho fez login no meu PC com sua própria conta de domínio, ele experimentou o atraso. Esses testes mostram que o problema é exclusivo do meu PC. Além disso, o problema só aparece ao se conectar a esse SQL Server e VPN específicos; Posso me conectar a outros SQL Servers na rede local via Autenticação do Windows sem demora.

Coisas que tentei sem sucesso:

  • Antivírus e firewall desativados
  • Renomeamos a pasta "12.0" em "%userprofile%\AppData\Roaming\Microsoft\SQL Server Management Studio" para "_12.0" para forçar o SSMS a recriar minhas configurações de usuário.
  • Force o protocolo de rede para TCP em vez de <default>. Eu também tentei pipes nomeados, mas meu servidor não está configurado para isso.
  • Instalei o SSMS 2012 e tentei isso em vez de 2014.
  • IPv6 desativado
  • Blackhole crl.microsoft.com para 127.0.0.1 no meu arquivo etc\hosts.
  • Desabilitou o Programa de Aperfeiçoamento da Experiência do Cliente no SSMS, Visual Studio e Windows.
  • Desinstalei todos os aplicativos relacionados ao SQL Server do meu PC e reinstalei apenas em 2012.

Dicas do TCPView:

  • Usando TCPView, notei que quando faço uma nova conexão, seu estado se torna ESTABLISHED imediatamente, mas uma ou duas conexões a mais com o SQL Server são tentadas continuamente e fechadas com TIME_WAIT . No computador do meu colega de trabalho, essas conexões são ESTABELECIDAS e sólidas. Portanto, tenho certeza de que essa é a fonte dos tempos limite, mas para que servem as conexões e por que elas falham? (Não tenho nenhum complemento no meu SSMS.)

Alguma ideia?

Atualização: Pista Intellisense/Autocomplete (?):

Percebi que quando finalmente me conecto, o Intellisense/Autocomplete não funciona. Eles exigem conexões separadas do SSMS? Tentei desativá-los e não pareceu resolver o longo atraso de conexão.

sql-server sql-server-2012
  • 5 respostas
  • 48310 Views
Martin Hope
Jordan Rieger
Asked: 2013-09-06 15:59:14 +0800 CST

Por que esses dois INSERTs estão em conflito? É o gatilho? O que esse log de rastreamento de impasse 1222 me diz?

  • 0

Estamos vendo impasses intermitentes na produção ao receber várias solicitações de API simultâneas. Cada requisição basicamente culmina em uma instrução INSERT na mesma tabela, que é onde vemos o impasse. Escrevi um aplicativo de console de thread duplo que pode reproduzir o problema de maneira confiável simplesmente executando duas solicitações de API simultaneamente, mas apenas na produção, não na preparação. (Isso me leva a acreditar que há algo sobre nosso banco de dados de teste - possivelmente o volume de dados, SQL Server 2012 vs 2005 ou ajuste de índice - que difere da produção de forma que o impasse é evitado. O código é idêntico, como acredito ser o esquema.)

Como agora posso reproduzir o impasse, consegui convencer meu chefe a ativar o sinalizador de rastreamento 1222 temporariamente e capturei o log abaixo:

Date,Source,Severity,Message
09/05/2013 16:32:19,spid71,Unknown,DBCC TRACEOFF 1222<c/> server process ID (SPID) 71. This is an informational message only; no user action is required.
09/05/2013 16:30:55,spid17s,Unknown,waiter id=processf34868 mode=X requestType=wait
09/05/2013 16:30:55,spid17s,Unknown,waiter-list
09/05/2013 16:30:55,spid17s,Unknown,owner id=processf35c18 mode=X
09/05/2013 16:30:55,spid17s,Unknown,owner-list
09/05/2013 16:30:55,spid17s,Unknown,objectlock lockPartition=0 objid=428945000 subresource=FULL dbid=8 objectname=MyDB.DomainTransferRAR id=lock120a72c80 mode=X associatedObjectId=428945000
09/05/2013 16:30:55,spid17s,Unknown,waiter id=processf35c18 mode=X requestType=convert
09/05/2013 16:30:55,spid17s,Unknown,waiter-list
09/05/2013 16:30:55,spid17s,Unknown,owner id=processf34868 mode=IX
09/05/2013 16:30:55,spid17s,Unknown,owner-list
09/05/2013 16:30:55,spid17s,Unknown,objectlock lockPartition=0 objid=2096426938 subresource=FULL dbid=8 objectname=MyDB.DomainTransferRANT id=lock11de95480 mode=IX associatedObjectId=2096426938
09/05/2013 16:30:55,spid17s,Unknown,resource-list
09/05/2013 16:30:55,spid17s,Unknown,VALUES (@p0<c/>
09/05/2013 16:30:55,spid17s,Unknown,(@p0 uniqueidentifier<c/>@p1 int<c/>@p2 int<c/>@p3 varchar(8000)<c/>@p4 char(5)<c/>@p5 int<c/>@p6 datetime<c/>@p7 datetime<c/>@p8 varchar(8000)<c/>@p9 char(5)<c/>@p10 int<c/>@p11 datetime<c/>@p12 datetime<c/>@p13 varchar(8000)<c/>@p14 int<c/>@p15 xml<c/>@p16 datetime<c/>@p17 datetime<c/>@p18 varchar(8000)<c/>@p19 datetime<c/>@p20 datetime<c/>@p21 varchar(8000)<c/>@p22 bit<c/>@p23 varchar(8000)<c/>@p24 varchar(8000)<c/>@p25 uniqueidentifier)INSERT INTO [dbo].[DomainTransferRANT]([DomainTransferRANTGUID]<c/> [PrebookedBillPackageId]<c/> [domainID]<c/> [DomainName]<c/> [GainingWNAccountID]<c/> [GainingRegistrantID]<c/> [dtGainingRequestSent]<c/> [dtGainingResponseReceived]<c/> [DomainTransferGainingPartyRespCode]<c/> [LosingWNAccountID]<c/> [LosingRegistrantID]<c/> [dtLosingRequestSent]<c/> [dtLosingResponseReceived]<c/> [DomainTransferLosingPartyRespCode]<c/> [SubmittedBillPackageId]<c/> [ExtraInfo]<c/> [dtRequestSentToRegistry]<c/> [dtResponseFromRegistry]<c/> [DomainTransferRegistryRespCode]<c/> [dtDeleted]<c/> [dtLastChecked]<c/> [DomainTransferStatusCode]<c/> [SendConfirmationForEachDomain]<c/> [SummaryStatus]<c/> [WHOISBeforeTransfer])
09/05/2013 16:30:55,spid17s,Unknown,inputbuf
09/05/2013 16:30:55,spid17s,Unknown,unknown
09/05/2013 16:30:55,spid17s,Unknown,frame procname=unknown line=1 sqlhandle=0x000000000000000000000000000000000000000000000000
09/05/2013 16:30:55,spid17s,Unknown,VALUES (@p0<c/> @p1<c/> @p2<c/> @p3<c/> @p4<c/> @p5<c/> @p6<c/> @p7<c/> @p8<c/> @p9<c/> @p10<c/> @p11<c/> @p12<c/> @p13<c/> @p14<c/> @p15<c/> @p16<c/> @p17<c/> @p18<c/> @p19<c/> @p20<c/> @p21<c/> @p22<c/> @p23<c/> @p24)
09/05/2013 16:30:55,spid17s,Unknown,INSERT INTO [dbo].[DomainTransferRANT]([DomainTransferRANTGUID]<c/> [PrebookedBillPackageId]<c/> [domainID]<c/> [DomainName]<c/> [GainingWNAccountID]<c/> [GainingRegistrantID]<c/> [dtGainingRequestSent]<c/> [dtGainingResponseReceived]<c/> [DomainTransferGainingPartyRespCode]<c/> [LosingWNAccountID]<c/> [LosingRegistrantID]<c/> [dtLosingRequestSent]<c/> [dtLosingResponseReceived]<c/> [DomainTransferLosingPartyRespCode]<c/> [SubmittedBillPackageId]<c/> [ExtraInfo]<c/> [dtRequestSentToRegistry]<c/> [dtResponseFromRegistry]<c/> [DomainTransferRegistryRespCode]<c/> [dtDeleted]<c/> [dtLastChecked]<c/> [DomainTransferStatusCode]<c/> [SendConfirmationForEachDomain]<c/> [SummaryStatus]<c/> [WHOISBeforeTransfer])
09/05/2013 16:30:55,spid17s,Unknown,frame procname=adhoc line=1 stmtstart=738 stmtend=2322 sqlhandle=0x0200000038d7940c60b76abf51c3cf1bc774fe27ba136260
09/05/2013 16:30:55,spid17s,Unknown,select @iLockDummy = 1 from DomainTransferRANT with (TABLOCKX<c/> HOLDLOCK) OPTION(EXPAND VIEWS)
09/05/2013 16:30:55,spid17s,Unknown,frame procname=MyDB.tri_DomainTransferRANT_InsUpd line=68 stmtstart=10336 stmtend=10544 sqlhandle=0x03000800c8c31e75b259fa002fa200000000000000000000
09/05/2013 16:30:55,spid17s,Unknown,executionStack
09/05/2013 16:30:55,spid17s,Unknown,process id=processf35c18 taskpriority=0 logused=2992 waitresource=OBJECT: 8:2096426938:0  waittime=171 ownerId=26880196297 transactionname=user_transaction lasttranstarted=2013-09-05T16:30:55.710 XDES=0x1c7b18b60 lockMode=X schedulerid=2 kpid=34404 status=suspended spid=69 sbid=0 ecid=0 priority=0 transcount=2 lastbatchstarted=2013-09-05T16:30:55.763 lastbatchcompleted=2013-09-05T16:30:55.710 clientapp=.Net SqlClient Data Provider hostname=WEB1 hostpid=13216 loginname=client isolationlevel=serializable (4) xactid=26880196297 currentdb=8 lockTimeout=4294967295 clientoption1=673316896 clientoption2=128056
09/05/2013 16:30:55,spid17s,Unknown,VALUES (@p0<c/>
09/05/2013 16:30:55,spid17s,Unknown,(@p0 uniqueidentifier<c/>@p1 int<c/>@p2 int<c/>@p3 varchar(8000)<c/>@p4 char(5)<c/>@p5 int<c/>@p6 datetime<c/>@p7 datetime<c/>@p8 varchar(8000)<c/>@p9 char(5)<c/>@p10 int<c/>@p11 datetime<c/>@p12 datetime<c/>@p13 varchar(8000)<c/>@p14 int<c/>@p15 xml<c/>@p16 datetime<c/>@p17 datetime<c/>@p18 varchar(8000)<c/>@p19 datetime<c/>@p20 datetime<c/>@p21 varchar(8000)<c/>@p22 bit<c/>@p23 varchar(8000)<c/>@p24 varchar(8000)<c/>@p25 uniqueidentifier)INSERT INTO [dbo].[DomainTransferRANT]([DomainTransferRANTGUID]<c/> [PrebookedBillPackageId]<c/> [domainID]<c/> [DomainName]<c/> [GainingWNAccountID]<c/> [GainingRegistrantID]<c/> [dtGainingRequestSent]<c/> [dtGainingResponseReceived]<c/> [DomainTransferGainingPartyRespCode]<c/> [LosingWNAccountID]<c/> [LosingRegistrantID]<c/> [dtLosingRequestSent]<c/> [dtLosingResponseReceived]<c/> [DomainTransferLosingPartyRespCode]<c/> [SubmittedBillPackageId]<c/> [ExtraInfo]<c/> [dtRequestSentToRegistry]<c/> [dtResponseFromRegistry]<c/> [DomainTransferRegistryRespCode]<c/> [dtDeleted]<c/> [dtLastChecked]<c/> [DomainTransferStatusCode]<c/> [SendConfirmationForEachDomain]<c/> [SummaryStatus]<c/> [WHOISBeforeTransfer])
09/05/2013 16:30:55,spid17s,Unknown,inputbuf
09/05/2013 16:30:55,spid17s,Unknown,unknown
09/05/2013 16:30:55,spid17s,Unknown,frame procname=unknown line=1 sqlhandle=0x000000000000000000000000000000000000000000000000
09/05/2013 16:30:55,spid17s,Unknown,VALUES (@p0<c/> @p1<c/> @p2<c/> @p3<c/> @p4<c/> @p5<c/> @p6<c/> @p7<c/> @p8<c/> @p9<c/> @p10<c/> @p11<c/> @p12<c/> @p13<c/> @p14<c/> @p15<c/> @p16<c/> @p17<c/> @p18<c/> @p19<c/> @p20<c/> @p21<c/> @p22<c/> @p23<c/> @p24)
09/05/2013 16:30:55,spid17s,Unknown,INSERT INTO [dbo].[DomainTransferRANT]([DomainTransferRANTGUID]<c/> [PrebookedBillPackageId]<c/> [domainID]<c/> [DomainName]<c/> [GainingWNAccountID]<c/> [GainingRegistrantID]<c/> [dtGainingRequestSent]<c/> [dtGainingResponseReceived]<c/> [DomainTransferGainingPartyRespCode]<c/> [LosingWNAccountID]<c/> [LosingRegistrantID]<c/> [dtLosingRequestSent]<c/> [dtLosingResponseReceived]<c/> [DomainTransferLosingPartyRespCode]<c/> [SubmittedBillPackageId]<c/> [ExtraInfo]<c/> [dtRequestSentToRegistry]<c/> [dtResponseFromRegistry]<c/> [DomainTransferRegistryRespCode]<c/> [dtDeleted]<c/> [dtLastChecked]<c/> [DomainTransferStatusCode]<c/> [SendConfirmationForEachDomain]<c/> [SummaryStatus]<c/> [WHOISBeforeTransfer])
09/05/2013 16:30:55,spid17s,Unknown,frame procname=adhoc line=1 stmtstart=738 stmtend=2322 sqlhandle=0x0200000038d7940c60b76abf51c3cf1bc774fe27ba136260
09/05/2013 16:30:55,spid17s,Unknown,select @iLockDummy = 1 from DomainTransferRAR with (TABLOCKX<c/> HOLDLOCK) OPTION(EXPAND VIEWS)
09/05/2013 16:30:55,spid17s,Unknown,frame procname=MyDB.tri_DomainTransferRANT_InsUpd line=67 stmtstart=10140 stmtend=10334 sqlhandle=0x03000800c8c31e75b259fa002fa200000000000000000000
09/05/2013 16:30:55,spid17s,Unknown,executionStack
09/05/2013 16:30:55,spid17s,Unknown,process id=processf34868 taskpriority=0 logused=3000 waitresource=OBJECT: 8:428945000:0  waittime=171 ownerId=26880196295 transactionname=user_transaction lasttranstarted=2013-09-05T16:30:55.710 XDES=0x1c7b18370 lockMode=X schedulerid=2 kpid=13932 status=suspended spid=93 sbid=0 ecid=0 priority=0 transcount=2 lastbatchstarted=2013-09-05T16:30:55.770 lastbatchcompleted=2013-09-05T16:30:55.710 clientapp=.Net SqlClient Data Provider hostname=MYDB hostpid=13216 loginname=client isolationlevel=serializable (4) xactid=26880196295 currentdb=8 lockTimeout=4294967295 clientoption1=673316896 clientoption2=128056
09/05/2013 16:30:55,spid17s,Unknown,process-list
09/05/2013 16:30:55,spid17s,Unknown,deadlock victim=processf35c18
09/05/2013 16:30:55,spid17s,Unknown,deadlock-list
09/05/2013 16:30:08,spid71,Unknown,DBCC TRACEON 1222<c/> server process ID (SPID) 71. This is an informational message only; no user action is required.

Uma coisa a observar é que há um gatilho na inserção na tabela relevante. O gatilho é necessário para determinar um código de status para o registro geral, que pode depender de registros irmãos na mesma tabela. Por muito tempo pensamos que o gatilho era a causa dos impasses, então adicionamos dicas de bloqueio cada vez mais agressivas ao gatilho, culminando na configuração atual onde fazemos um TABLOCKX, HOLDLOCK na(s) tabela(s) relevante(s) antes da seção crítica. Achamos que isso evitaria completamente os impasses, às custas de algum desempenho, serializando efetivamente todas as inserções. Mas parece que não é o caso. Pelo que entendi, algo mais anterior aos nossos bloqueios de tabela exclusivos já deve estar mantendo um bloqueio compartilhado ou atualizado. Mas o que?

Outras informações que podem te ajudar a me ajudar: A tabela DomainTransferRANT é altamente indexada. Sua chave primária é um GUID não agrupado. Há um índice clusterizado em outra coluna INT importante. E há outros 7 índices não agrupados. Finalmente, existem várias restrições de chave estrangeira.

sql-server sql-server-2005
  • 1 respostas
  • 3247 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