Search Postgresql Archives

Server goes to Recovery Mode when run a SQL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I have a complex query which puts my server in recovery mode every time I run it. I don´t need to say that recovery mode is a situation you don´t want your server goes to. If I´m using some subselects I´ll get that situation with StatusTrabalhando(Intkey) as (select Intkey from sys_Lookup where Grupo = $$StatusDigitacao$$ and Intkey in (select unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var where Name = $$/Company/StatusDigitacaoReceptivoTrabalhando$$)), StatusAgendados(Intkey) as (select Intkey from sys_Lookup where Grupo = $$StatusVisita$$ and Intkey in (select unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var where Name = $$/Company/StatusDigitacaoReceptivoAgendados$$) and Intkey not in (select unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var where Name = $$/Company/StatusDigitacaoReceptivoDescartarAgendados$$)), Todos(Digitacao_ID, Fonte_ID, Curso_ID, Digitador_ID, Pesquisador_ID, Telemarketing_ID, Nome, Curso, Telefone, Celular, Nascimento, Sexo, Escolaridade, Cadastro, Email, Idade, Obs, Extra1, Extra2, Extra3, Extra4, Colegio, Serie, Turma, Turno, AnoLetivo, Pai, Mae, Sequencia, Status, lkStatus, lkFonte, lkDigitador, lkPesquisador, lkTelemarketing, lkEscolaridade, Endereco, Bairro, Cidade, Estado, CEP, Repetido, Impresso, Etiqueta, WhatsApp, VisitaNome, VisitaStatus, Comercial, Midia, Prioridade, DataHoraAlteracao, Fluxo) ... but if I run those subselects previously, get those values and put the results to my statement, then it works. with StatusDigitacaoReceptivoDescartarAgendados(Intkey) as (select unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var where Name = $$/Company/StatusDigitacaoReceptivoDescartarAgendados$$), StatusDigitacaoReceptivoAgendados(IntKey) as (select unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var where Name = $$/Company/StatusDigitacaoReceptivoAgendados$$), StatusDigitacaoReceptivoTrabalhando(IntKey) as (select unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var where Name = $$/Company/StatusDigitacaoReceptivoTrabalhando$$) select (select IntKey from StatusDigitacaoReceptivoDescartarAgendados), (select IntKey from StatusDigitacaoReceptivoAgendados), (select IntKey from StatusDigitacaoReceptivoTrabalhando); Then i get these results (8, 14 and 17) and replace those subselects with these values and run, now it runs fine. with StatusTrabalhando(Intkey) as (select Intkey from sys_Lookup where Grupo = $$StatusDigitacao$$ and Intkey in (8)), StatusAgendados(Intkey) as (select Intkey from sys_Lookup where Grupo = $$StatusVisita$$ and Intkey in (14) and Intkey not in (17)), Todos(Digitacao_ID, Fonte_ID, Curso_ID, Digitador_ID, Pesquisador_ID, Telemarketing_ID, Nome, Curso, Telefone, Celular, Nascimento, Sexo, Escolaridade, Cadastro, Email, Idade, Obs, Extra1, Extra2, Extra3, Extra4, Colegio, Serie, Turma, Turno, AnoLetivo, Pai, Mae, Sequencia, Status, lkStatus, lkFonte, lkDigitador, lkPesquisador, lkTelemarketing, lkEscolaridade, Endereco, Bairro, Cidade, Estado, CEP, Repetido, Impresso, Etiqueta, WhatsApp, VisitaNome, VisitaStatus, Comercial, Midia, Prioridade, DataHoraAlteracao, Fluxo) My original query, which worked for some days and then went to recovery mode was ... with StatusTrabalhando(Intkey) as (select Intkey from sys_Lookup where Grupo = $$StatusDigitacao$$ and Intkey in (select unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var where Name = $$/Company/StatusDigitacaoReceptivoTrabalhando$$)), StatusAgendados(Intkey) as (select Intkey from sys_Lookup where Grupo = $$StatusVisita$$ and Intkey in (select unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var where Name = $$/Company/StatusDigitacaoReceptivoAgendados$$) and Intkey not in (select unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var where Name = $$/Company/StatusDigitacaoReceptivoDescartarAgendados$$)), Todos(Digitacao_ID, Fonte_ID, Curso_ID, Digitador_ID, Pesquisador_ID, Telemarketing_ID, Nome, Curso, Telefone, Celular, Nascimento, Sexo, Escolaridade, Cadastro, Email, Idade, Obs, Extra1, Extra2, Extra3, Extra4, Colegio, Serie, Turma, Turno, AnoLetivo, Pai, Mae, Sequencia, Status, lkStatus, lkFonte, lkDigitador, lkPesquisador, lkTelemarketing, lkEscolaridade, Endereco, Bairro, Cidade, Estado, CEP, Repetido, Impresso, Etiqueta, WhatsApp, VisitaNome, VisitaStatus, Comercial, Midia, Prioridade, DataHoraAlteracao, Fluxo); as (select D.Digitacao_ID, D.Fonte_ID, D.Curso_ID, Digitador_ID, D.Pesquisador_ID, D.Telemarketing_ID, D.Nome, Curso.Descricao Curso, D.Telefone, D.Celular, D.Nascimento, D.Sexo, D.Escolaridade, D.Cadastro, D.Email, D.Idade, D.Obs, D.Extra1, D.Extra2, D.Extra3, D.Extra4, D.Colegio, D.Serie, D.Turma, D.Turno, D.AnoLetivo, D.Pai, D.Mae, D.Sequencia, D.Status, Status.Descricao lkStatus, Fonte.Fonte lkFonte, DigitadorPessoa.Apelido lkDigitador, Pesquisador.Apelido lkPesquisador, Telemarketing.Login lkTelemarketing, Escolaridade.Descricao lkEscolaridade, D.Endereco, D.Bairro, D.Cidade, D.Estado, D.CEP, D.Repetido, D.Impresso, D.Etiqueta, D.WhatsApp, PessoaNome.Nome VisitaNome, VisitaStatus.Descricao VisitaStatus, D.Comercial, Midia.Descricao, Midia.LetterKey, D.DataHoraAlteracao, case when Telemarketing_ID is Null then $$Não Atribuido$$ when D.Status is null then $$Atribuido$$ when D.Status in (select IntKey from StatusTrabalhando) then $$Trabalhando$$ when VisitaNome.Status in (select IntKey from StatusAgendados) then $$Agendados$$ else $$Descartados$$ end Fluxo from cad_Digitacao D inner join cad_Fonte Fonte on Fonte.Fonte_ID = D.Fonte_ID inner join sys_lookup TipoFonte on TipoFonte.intkey = Fonte.TipoFonte left join sys_Account Telemarketing on Telemarketing.Pessoa_ID = D.Telemarketing_ID left join sys_Account Digitador on Digitador.Account_ID = D.Digitador_ID left join cad_Pessoa DigitadorPessoa on Digitador.Pessoa_ID = DigitadorPessoa.Pessoa_ID left join cad_Pessoa Pesquisador on Pesquisador.Pessoa_ID = D.Pesquisador_ID left join col_Curso Curso on Curso.Curso_ID = D.Curso_ID left join sys_Lookup Midia on Midia.Grupo = $$Midia$$ and Midia.IntKey = Fonte.Midia left join sys_Lookup Escolaridade on Escolaridade.Grupo = $$Escolaridade$$ and Escolaridade.IntKey = D.Escolaridade left join sys_Lookup Status on Status.Grupo = $$StatusDigitacao$$ and Status.IntKey = D.Status left join cad_visita VisitaNome on VisitaNome.Digitacao_ID = D.Digitacao_ID left join sys_Lookup VisitaStatus on VisitaStatus.Grupo = $$StatusVisita$$ and VisitaStatus.IntKey = VisitaNome.Status left join cad_Pessoa PessoaNome on PessoaNome.Pessoa_ID = VisitaNome.Pessoa_ID where TipoFonte.descricao = $$Campanhas$$ and Fonte.Ativo = 1 ), NaoAtribuidos as (select * from Todos where Fluxo = $$Não Atribuido$$), Atribuidos as (select * from Todos where Fluxo = $$Atribuido$$), Trabalhando as (select * from todos where Fluxo = $$Trabalhando$$), Agendados as (select * from todos where Fluxo = $$Agendados$$), Descartados as (select * from todos where Fluxo = $$Descartados$$) select * from (select 1 as Ordem, Digitacao_ID, cast(Null as I32) Fonte_ID, cast(Null as I32) Curso_ID, cast(Null as I32) Digitador_ID, cast(Null as I32) Pesquisador_ID, Telemarketing_ID, Nome, cast(Null as T100) Curso, Cast(Null as Telefone) Telefone, Cast(Null as Telefone) Celular, Cast(Null as Data) Nascimento, cast(Null as Sexo) as Sexo, Cast(Null as I16) Escolaridade, Cadastro, Cast(Null as T50) Email, Cast(Null as I16) Idade, Cast(Null as Memo) Obs, Cast(Null as T50) Extra1, Cast(Null as T50) Extra2, Cast(Null as T50) Extra3, Cast(Null as T50) Extra4, Cast(Null as T50) Colegio, Cast(Null as T50) Serie, Cast(Null as T50) Turma, Cast(Null as C1) Turno, Cast(Null as I16) AnoLetivo, Cast(Null as T50) Pai, Cast(Null as T50) Mae, Sequencia, Cast(Null as I16) Status, lkStatus, lkFonte, Cast(Null as T50) lkDigitador, Cast(Null as T50) lkPesquisador, lkTelemarketing, Cast(Null as T50) lkEscolaridade, Cast(Null as T50) Endereco, Cast(Null as T30) Bairro, Cast(Null as T30) Cidade, Cast(Null as Estado) Estado, Cast(Null as T10) CEP, Cast(Null as I16) Repetido, Cast(Null as DataHora) Impresso, Cast(Null as DataHora) Etiqueta, Cast(Null as I16) WhatsApp, Cast(Null as T250) VisitaNome, Cast(Null as T50) VisitaStatus, Cast(Null as Telefone) Comercial, Midia, Fluxo from NaoAtribuidos order by Ordem, Prioridade desc, Cadastro) NA union all select 2 as Ordem, Digitacao_ID, Fonte_ID, Curso_ID, Digitador_ID, Pesquisador_ID, Telemarketing_ID, Nome, Curso, Telefone, Celular, Nascimento, Sexo, Escolaridade, Cadastro, Email, Idade, Obs, Extra1, Extra2, Extra3, Extra4, Colegio, Serie, Turma, Turno, AnoLetivo, Pai, Mae, Sequencia, Status, lkStatus, lkFonte, lkDigitador, lkPesquisador, lkTelemarketing, lkEscolaridade, Endereco, Bairro, Cidade, Estado, CEP, Repetido, Impresso, Etiqueta, WhatsApp, VisitaNome, VisitaStatus, Comercial, Midia, Fluxo from Atribuidos union all select 3 as Ordem, Digitacao_ID, Fonte_ID, Curso_ID, Digitador_ID, Pesquisador_ID, Telemarketing_ID, Nome, Curso, Telefone, Celular, Nascimento, Sexo, Escolaridade, Cadastro, Email, Idade, Obs, Extra1, Extra2, Extra3, Extra4, Colegio, Serie, Turma, Turno, AnoLetivo, Pai, Mae, Sequencia, Status, lkStatus, lkFonte, lkDigitador, lkPesquisador, lkTelemarketing, lkEscolaridade, Endereco, Bairro, Cidade, Estado, CEP, Repetido, Impresso, Etiqueta, WhatsApp, VisitaNome, VisitaStatus, Comercial, Midia, Fluxo from Trabalhando union all select 4 as Ordem, Digitacao_ID, Fonte_ID, Curso_ID, Digitador_ID, Pesquisador_ID, Telemarketing_ID, Nome, Curso, Telefone, Celular, Nascimento, Sexo, Escolaridade, Cadastro, Email, Idade, Obs, Extra1, Extra2, Extra3, Extra4, Colegio, Serie, Turma, Turno, AnoLetivo, Pai, Mae, Sequencia, Status, lkStatus, lkFonte, lkDigitador, lkPesquisador, lkTelemarketing, lkEscolaridade, Endereco, Bairro, Cidade, Estado, CEP, Repetido, Impresso, Etiqueta, WhatsApp, VisitaNome, VisitaStatus, Comercial, Midia, Fluxo from Agendados union all select 5 as Ordem, Digitacao_ID, Fonte_ID, Curso_ID, Digitador_ID, Pesquisador_ID, Telemarketing_ID, Nome, Curso, Telefone, Celular, Nascimento, Sexo, Escolaridade, Cadastro, Email, Idade, Obs, Extra1, Extra2, Extra3, Extra4, Colegio, Serie, Turma, Turno, AnoLetivo, Pai, Mae, Sequencia, Status, lkStatus, lkFonte, lkDigitador, lkPesquisador, lkTelemarketing, lkEscolaridade, Endereco, Bairro, Cidade, Estado, CEP, Repetido, Impresso, Etiqueta, WhatsApp, VisitaNome, VisitaStatus, Comercial, Midia, Fluxo from Descartados order by Ordem; And the explain of that query was ... QUERY PLAN Sort (cost=2640.68..2640.84 rows=65 width=1128) Sort Key: "*SELECT* 1".ordem CTE statustrabalhando -> Hash Semi Join (cost=15.44..30.40 rows=7 width=4) Hash Cond: ((sys_lookup.intkey)::text = (unnest(string_to_array("substring"((sys_var.varvalue)::text, 3), ','::text)))) -> Bitmap Heap Scan on sys_lookup (cost=4.39..19.21 rows=14 width=4) Recheck Cond: ((grupo)::text = 'StatusDigitacao'::text) -> Bitmap Index Scan on idxsyslookupgrupointkey (cost=0.00..4.38 rows=14 width=0) Index Cond: ((grupo)::text = 'StatusDigitacao'::text) -> Hash (cost=9.81..9.81 rows=100 width=32) -> ProjectSet (cost=0.28..8.81 rows=100 width=32) -> Index Scan using idxsysvarname on sys_var (cost=0.28..8.29 rows=1 width=9) Index Cond: ((name)::text = '/Company/StatusDigitacaoReceptivoTrabalhando'::text) CTE statusagendados -> Hash Semi Join (cost=24.51..39.66 rows=4 width=4) Hash Cond: ((sys_lookup_1.intkey)::text = (unnest(string_to_array("substring"((sys_var_2.varvalue)::text, 3), ','::text)))) -> Bitmap Heap Scan on sys_lookup sys_lookup_1 (cost=13.46..28.53 rows=8 width=4) Recheck Cond: ((grupo)::text = 'StatusVisita'::text) Filter: (NOT (hashed SubPlan 2)) -> Bitmap Index Scan on idxsyslookupgrupointkey (cost=0.00..4.40 rows=16 width=0) Index Cond: ((grupo)::text = 'StatusVisita'::text) SubPlan 2 -> ProjectSet (cost=0.28..8.81 rows=100 width=32) -> Index Scan using idxsysvarname on sys_var sys_var_1 (cost=0.28..8.29 rows=1 width=9) Index Cond: ((name)::text = '/Company/StatusDigitacaoReceptivoDescartarAgendados'::text) -> Hash (cost=9.81..9.81 rows=100 width=32) -> ProjectSet (cost=0.28..8.81 rows=100 width=32) -> Index Scan using idxsysvarname on sys_var sys_var_2 (cost=0.28..8.29 rows=1 width=9) Index Cond: ((name)::text = '/Company/StatusDigitacaoReceptivoAgendados'::text) CTE todos -> Merge Right Join (cost=2152.17..2282.99 rows=2504 width=828) Merge Cond: ((visitanome.digitacao_id)::integer = (d.digitacao_id)::integer) -> Nested Loop Left Join (cost=4.99..56111.59 rows=77463 width=46) -> Nested Loop Left Join (cost=4.69..22162.21 rows=77463 width=27) Join Filter: ((visitastatus.intkey)::integer = (visitanome.status)::smallint) -> Index Scan using idxvisitadigitacao on cad_visita visitanome (cost=0.29..3551.70 rows=77463 width=10) -> Materialize (cost=4.40..19.43 rows=16 width=21) -> Bitmap Heap Scan on sys_lookup visitastatus (cost=4.40..19.35 rows=16 width=21) Recheck Cond: ((grupo)::text = 'StatusVisita'::text) -> Bitmap Index Scan on idxsyslookupgrupointkey (cost=0.00..4.40 rows=16 width=0) Index Cond: ((grupo)::text = 'StatusVisita'::text) -> Index Scan using pkpessoa on cad_pessoa pessoanome (cost=0.29..0.44 rows=1 width=27) Index Cond: ((pessoa_id)::integer = (visitanome.pessoa_id)::integer) -> Sort (cost=2146.94..2148.64 rows=682 width=756) Sort Key: d.digitacao_id -> Hash Left Join (cost=1301.36..2114.84 rows=682 width=756) Hash Cond: ((d.status)::smallint = (status.intkey)::integer) -> Hash Left Join (cost=1281.98..2081.79 rows=682 width=739) Hash Cond: ((d.escolaridade)::smallint = (escolaridade.intkey)::integer) -> Hash Left Join (cost=1263.51..2053.08 rows=682 width=722) Hash Cond: ((fonte.midia)::smallint = (midia.intkey)::integer) -> Hash Left Join (cost=1233.51..1959.83 rows=682 width=705) Hash Cond: ((d.curso_id)::integer = (curso.curso_id)::integer) -> Nested Loop Left Join (cost=1219.91..1944.43 rows=682 width=673) -> Hash Left Join (cost=1219.62..1411.81 rows=682 width=650) Hash Cond: ((d.telemarketing_id)::integer = (telemarketing.pessoa_id)::integer) -> Hash Left Join (cost=1213.06..1401.72 rows=682 width=639) Hash Cond: ((d.digitador_id)::integer = (digitador.account_id)::integer) -> Nested Loop (cost=29.52..215.51 rows=682 width=616) -> Hash Join (cost=29.24..54.61 rows=7 width=17) Hash Cond: ((fonte.tipofonte)::smallint = (tipofonte.intkey)::integer) -> Seq Scan on cad_fonte fonte (cost=0.00..24.62 rows=136 width=19) Filter: ((ativo)::smallint = 1) -> Hash (cost=29.21..29.21 rows=2 width=4) -> Seq Scan on sys_lookup tipofonte (cost=0.00..29.21 rows=2 width=4) Filter: ((descricao)::text = 'Campanhas'::text) -> Index Scan using idxdigitacaofonte on cad_digitacao d (cost=0.29..20.72 rows=227 width=603) Index Cond: ((fonte_id)::integer = (fonte.fonte_id)::integer) -> Hash (cost=1181.56..1181.56 rows=158 width=27) -> Nested Loop Left Join (cost=0.29..1181.56 rows=158 width=27) -> Seq Scan on sys_account digitador (cost=0.00..4.58 rows=158 width=8) -> Index Scan using pkpessoa on cad_pessoa digitadorpessoa (cost=0.29..7.45 rows=1 width=27) Index Cond: ((digitador.pessoa_id)::integer = (pessoa_id)::integer) -> Hash (cost=4.58..4.58 rows=158 width=15) -> Seq Scan on sys_account telemarketing (cost=0.00..4.58 rows=158 width=15) -> Index Scan using pkpessoa on cad_pessoa pesquisador (cost=0.29..0.78 rows=1 width=27) Index Cond: ((pessoa_id)::integer = (d.pesquisador_id)::integer) -> Hash (cost=11.60..11.60 rows=160 width=36) -> Seq Scan on col_curso curso (cost=0.00..11.60 rows=160 width=36) -> Hash (cost=27.06..27.06 rows=236 width=23) -> Bitmap Heap Scan on sys_lookup midia (cost=10.11..27.06 rows=236 width=23) Recheck Cond: ((grupo)::text = 'Midia'::text) -> Bitmap Index Scan on idxsyslookupgrupointkey (cost=0.00..10.05 rows=236 width=0) Index Cond: ((grupo)::text = 'Midia'::text) -> Hash (cost=18.34..18.34 rows=10 width=21) -> Bitmap Heap Scan on sys_lookup escolaridade (cost=4.36..18.34 rows=10 width=21) Recheck Cond: ((grupo)::text = 'Escolaridade'::text) -> Bitmap Index Scan on idxsyslookupgrupointkey (cost=0.00..4.35 rows=10 width=0) Index Cond: ((grupo)::text = 'Escolaridade'::text) -> Hash (cost=19.21..19.21 rows=14 width=21) -> Bitmap Heap Scan on sys_lookup status (cost=4.39..19.21 rows=14 width=21) Recheck Cond: ((grupo)::text = 'StatusDigitacao'::text) -> Bitmap Index Scan on idxsyslookupgrupointkey (cost=0.00..4.38 rows=14 width=0) Index Cond: ((grupo)::text = 'StatusDigitacao'::text) SubPlan 4 -> CTE Scan on statustrabalhando (cost=0.00..0.14 rows=7 width=4) SubPlan 5 -> CTE Scan on statusagendados (cost=0.00..0.08 rows=4 width=4) CTE naoatribuidos -> CTE Scan on todos (cost=0.00..56.34 rows=13 width=1164) Filter: (fluxo = 'Não Atribuido'::text) CTE atribuidos -> CTE Scan on todos todos_1 (cost=0.00..56.34 rows=13 width=1164) Filter: (fluxo = 'Atribuido'::text) CTE trabalhando -> CTE Scan on todos todos_2 (cost=0.00..56.34 rows=13 width=1164) Filter: (fluxo = 'Trabalhando'::text) CTE agendados -> CTE Scan on todos todos_3 (cost=0.00..56.34 rows=13 width=1164) Filter: (fluxo = 'Agendados'::text) CTE descartados -> CTE Scan on todos todos_4 (cost=0.00..56.34 rows=13 width=1164) Filter: (fluxo = 'Descartados'::text) -> Append (cost=1.80..3.98 rows=65 width=1128) -> Subquery Scan on "*SELECT* 1" (cost=1.80..2.09 rows=13 width=1128) -> Subquery Scan on na (cost=1.80..1.96 rows=13 width=1128) -> Sort (cost=1.80..1.83 rows=13 width=1160) Sort Key: naoatribuidos.prioridade DESC, naoatribuidos.cadastro -> CTE Scan on naoatribuidos (cost=0.00..1.56 rows=13 width=1160) -> Subquery Scan on "*SELECT* 2" (cost=0.00..0.39 rows=13 width=1128) -> CTE Scan on atribuidos (cost=0.00..0.26 rows=13 width=1128) -> Subquery Scan on "*SELECT* 3" (cost=0.00..0.39 rows=13 width=1128) -> CTE Scan on trabalhando (cost=0.00..0.26 rows=13 width=1128) -> Subquery Scan on "*SELECT* 4" (cost=0.00..0.39 rows=13 width=1128) -> CTE Scan on agendados (cost=0.00..0.26 rows=13 width=1128) -> Subquery Scan on "*SELECT* 5" (cost=0.00..0.39 rows=13 width=1128) -> CTE Scan on descartados (cost=0.00..0.26 rows=13 width=1128) So, how to solve that and mainly how to don´t get this recovery mode just running a query ?

Sent from the PostgreSQL - general mailing list archive at Nabble.com.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux