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 / dba / Perguntas / 34267
Accepted
wootscootinboogie
wootscootinboogie
Asked: 2013-02-07 11:24:36 +0800 CST2013-02-07 11:24:36 +0800 CST 2013-02-07 11:24:36 +0800 CST

Lidando com arquivos de log grandes

  • 772

Sou novo no mundo do banco de dados e recentemente comecei a trabalhar com um grande banco de dados com várias tabelas principalmente com texto varchar e inteiros. As duas maiores tabelas são de aproximadamente 50 milhões e 25 milhões de linhas. O banco de dados contém cerca de 350.000 números de identificação para pessoas e muitas vezes preciso recuperar informações sobre todos os indivíduos que envolvem junções para ambas as minhas tabelas muito grandes (elas são um para muitos relacionamentos). Essas consultas também são de natureza temporal e envolvem obetweenoperador para determinar eventos que acontecem sem um determinado período de tempo. Geralmente, leva de 10 a 15 minutos para que algumas dessas consultas sejam executadas (ainda estou aprendendo e tento novos índices para ver se consigo melhorar o desempenho. Depois de ficar sem memória RAM executando uma consulta específica, meu computador congelou e eu tive que reiniciar. Mesmo depois de reiniciar, não consegui desanexar, descartar conexões e excluir meus arquivos de log para excluir meu banco de dados (que estava no modo de recuperação).

Inicializei no modo de segurança para excluir os arquivos mdf e ldf e vi que meu arquivo de log tinha o dobro do tamanho do arquivo de dados. Se eu precisar executar consultas rotineiramente que retornarão informações temporais agregadas em tabelas do tamanho especificado acima, há algo que eu possa fazer para evitar o inchaço do log? Além disso, sei que o SQL Server consome recursos para o almoço, mas que tipo de especificações um computador precisa ter para executar uma consulta como a seguinte com os tamanhos de tabela listados acima? (demora uma hora na minha máquina local)

EDIT: este banco de dados é estático por natureza e não terá nada adicionado a ele. também está indisponível apenas para um usuário, eu. Não tenho certeza de que tipo de recuperação teve, não tenho esse PC na minha frente no momento.

consulta:

--my real database field names are not this generic
;with x
as
(   --the first CTE finds the number of different classes a person qualified for and lists a number for a given date
    select  rx.pat_id
           ,c.cal_date
           ,COUNT(distinct rx.class) as distinctClass
           from rx,Calendar as c
           where c.cal_date between rx.fill_date and rx.script_end_date
           group by rx.pat_id,c.cal_date

),y
as
(   --the second CTE gives interval number to the date so the max and min date values can be grouped by grp_nbr to give a time span
    select x.pat_id
          ,x.cal_date
          ,c2.id-ROW_NUMBER() over(partition by x.pat_id,x.distinctClass
                 order by x.cal_date) as grp_nbr
          ,x.distinctClass
          from x
          inner join Calendar as c2 
          on c2.cal_date=x.cal_date
)
--this groups the max and min dates with a particular grp_nbr and the number of different classes a person qualifies for
select y.pat_id,min(cal_date),max(cal_date),MIN(distinctClass)
    from y
    group by y.pat_id,grp_nbr
    order by MIN(distinctClass) desc
sql-server sql-server-2008
  • 1 1 respostas
  • 118 Views

1 respostas

  • Voted
  1. Best Answer
    datagod
    2013-02-07T11:54:51+08:002013-02-07T11:54:51+08:00

    Se o banco de dados for verdadeiramente estático por natureza, colocá-lo no modo somente leitura impediria o crescimento do log. As consultas que estão causando o crescimento falhariam, portanto, isso pode não ser realmente o que você está procurando.

    Coloque o banco de dados no modo de recuperação simples. Dessa forma, os logs de transações serão rotineiramente truncados. Quando estiver no modo completo, seus logs continuarão a crescer até que seja feito o backup.

    USE [master]
    GO
    ALTER DATABASE [YourDatabase] SET RECOVERY SIMPLE WITH ROLLBACK IMMEDIATE
    GO
    
    • 3

relate perguntas

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Quanto "Padding" coloco em meus índices?

  • Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?

  • Como determinar se um Índice é necessário ou necessário

  • Downgrade do SQL Server 2008 para 2005

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • 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

    Conceder acesso a todas as tabelas para um usuário

    • 5 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
    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
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +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