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 / 问题

All perguntas(dba)

Martin Hope
tufelkinder
Asked: 2015-07-20 18:51:07 +0800 CST

Soma/contagem/média contínua ao longo do intervalo de datas

  • 24

Em um banco de dados de transações abrangendo milhares de entidades ao longo de 18 meses, gostaria de executar uma consulta para agrupar todos os períodos possíveis de 30 dias entity_idcom uma SOMA de seus valores de transação e COUNT de suas transações nesse período de 30 dias e retornar os dados de uma maneira que eu possa consultar. Depois de muitos testes, este código realiza muito do que eu quero:

SELECT id, trans_ref_no, amount, trans_date, entity_id,
    SUM(amount) OVER(PARTITION BY entity_id, date_trunc('month',trans_date) ORDER BY entity_id, trans_date ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS trans_total,
    COUNT(id)   OVER(PARTITION BY entity_id, date_trunc('month',trans_date) ORDER BY entity_id, trans_date ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS trans_count
  FROM transactiondb;

E vou usar em uma query maior estruturada algo como:

SELECT * FROM (
  SELECT id, trans_ref_no, amount, trans_date, entity_id,
      SUM(amount) OVER(PARTITION BY entity_id, date_trunc('month',trans_date) ORDER BY entity_id, trans_date ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS trans_total,
      COUNT(id)   OVER(PARTITION BY entity_id, date_trunc('month',trans_date) ORDER BY entity_id, trans_date ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS trans_count
    FROM transactiondb ) q
WHERE trans_count >= 4
AND trans_total >= 50000;

O caso que essa consulta não cobre é quando as contagens de transações abrangem vários meses, mas ainda estão dentro de 30 dias uma da outra. Esse tipo de consulta é possível com o Postgres? Se sim, aceito qualquer contribuição. Muitos dos outros tópicos discutem agregações " executando ", não rolando .

Atualizar

O CREATE TABLEroteiro:

CREATE TABLE transactiondb (
    id integer NOT NULL,
    trans_ref_no character varying(255),
    amount numeric(18,2),
    trans_date date,
    entity_id integer
);

Dados de exemplo podem ser encontrados aqui . Estou executando o PostgreSQL 9.1.16.

A saída ideal incluiria todas SUM(amount)as COUNT()transações em um período contínuo de 30 dias. Veja esta imagem, por exemplo:

Exemplo de linhas que idealmente seriam incluídas em um "conjunto", mas não são porque meu conjunto é estático por mês.

O destaque verde da data indica o que está sendo incluído na minha consulta. A linha amarela destacada indica o que eu gostaria que fizesse parte do conjunto.

Leitura anterior:

  • Partição de função de janela do Postgresql por comparação
  • Agrupar por intervalos de dados
  • Melhor maneira de contar registros por intervalos de tempo arbitrários...
  • Média móvel no Postgresql
postgresql aggregate
  • 1 respostas
  • 95742 Views
Martin Hope
Nidhoegger
Asked: 2015-05-05 03:28:46 +0800 CST

Fazer backup/restaurar usuários/senhas/privilégios

  • 24

Estou mudando de um servidor para outro e quero fazer backup de todos os bancos de dados + usuários/privilégios/senhas do meu servidor MySQL. Eu encontrei para fazer backup de um banco de dados usando mysqldump, mas não consigo descobrir como fazer backup de todos os usuários e os privilégios fornecidos. Existe uma maneira de conseguir isso ou eu tenho que configurar isso recentemente no novo servidor?

mysql migration
  • 2 respostas
  • 79546 Views
Martin Hope
sjdh
Asked: 2014-09-06 02:46:28 +0800 CST

Como gerar uma sequência no mysql

  • 24

Considere esta tabela no mysql

create table numbers (number int);
insert into numbers values (3), (2), (9);
select * from numbers;

+--------+
| number |
+--------+
|      3 |
|      2 |
|      9 |
+--------+

Existe uma consulta simples para gerar uma tabela com as seguintes colunas

  1. Os números de 1 a 10
  2. 1 se o número estiver presente nos números da tabela e 0 caso contrário

Eu acho que você tem que criar uma sequência de números para fazer isso. Se possível, quero criar essa sequência sem armazená-la no banco de dados.

Pergunta relacionada: existe uma consulta select que gera uma sequência de números de 1 a 10 (ou 100 ou 1000)?

mysql sequence
  • 2 respostas
  • 55588 Views
Martin Hope
eddie_cat
Asked: 2014-08-19 11:49:59 +0800 CST

Mensagens do FlushCache que aparecem no log em horários específicos

  • 24

Temos tido muitos problemas de desempenho de banco de dados ultimamente e tenho tentado ver se consigo descobrir o motivo. Não temos um DBA (sou desenvolvedor de software), então estou meio que improvisando, e muito do que encontro online parece uma língua estrangeira para mim.

Reiniciamos o SQL Server todas as manhãs porque essa é a única maneira de funcionar durante o dia útil. Percebi que todas as manhãs, por volta das 5 da manhã, começamos a receber esta mensagem a cada dois minutos no log:

FlushCache: limpou 11848 bufs com 7432 gravações em 97168 ms (evitou 8139 novos bufs sujos) para db 9:0

última meta pendente: 4, avgWriteLatency 32

taxa de transferência média: 0,72 MB/s, saturação de E/S: 11635, alternâncias de contexto 18849

Os números diferem a cada vez, é claro, mas é a mesma mensagem repetidamente nesse padrão até que eu reinicie o servidor. Não tenho certeza de como interpretar isso, tenho tentado pesquisar no Google sobre isso e tudo o que reuni é que isso significa que pode haver algo errado com a E / S e que algo está demorando mais do que deveria. Recentemente, mudamos para o uso de SSD, então não achei que deveria ser um problema de gravação.

Alguém poderia dar uma luz sobre isso?

sql-server sql-server-2012
  • 1 respostas
  • 60902 Views
Martin Hope
Ario
Asked: 2014-01-13 12:53:13 +0800 CST

Suprimindo o prompt do SSMS para salvar as alterações

  • 24

salve a alteração nos seguintes itens

É possível configurar o SQL Server Management Studio (SSMS). para que a caixa de diálogo mostrada acima não apareça quando eu fechar uma janela de consulta não salva?

sql-server sql-server-2008
  • 1 respostas
  • 5885 Views
Martin Hope
Niels Kristian
Asked: 2013-09-17 07:49:55 +0800 CST

Como otimizar o banco de dados para I/O pesado de atualizações (software e hardware)

  • 24

A situação Eu tenho um banco de dados postgresql 9.2 que é bastante atualizado o tempo todo. O sistema está, portanto, vinculado à E/S, e atualmente estou pensando em fazer outra atualização, só preciso de algumas orientações sobre onde começar a melhorar.

Aqui está uma imagem de como a situação ficou nos últimos 3 meses:

insira a descrição da imagem aqui

Como você pode ver, as operações de atualização são responsáveis ​​pela maior parte da utilização do disco. Aqui está outra imagem de como a situação fica em uma janela de 3 horas mais detalhada:

insira a descrição da imagem aqui

Como você pode ver, a taxa de gravação de pico é de cerca de 20 MB/s

Software O servidor está executando o Ubuntu 12.04 e o postgresql 9.2. O tipo de atualizações são pequenas atualizações normalmente em linhas individuais identificadas por ID. Por exemplo UPDATE cars SET price=some_price, updated_at = some_time_stamp WHERE id = some_id. Eu removi e otimizei os índices tanto quanto eu acho que é possível, e a configuração dos servidores (tanto o kernel linux quanto o postgres conf) também está bastante otimizada.

Hardware O hardware é um servidor dedicado com 32 GB de RAM ECC, 4 discos SAS de 600 GB e 15.000 rpm em um array RAID 10, controlado por um controlador RAID LSI com BBU e um processador Intel Xeon E3-1245 Quadcore.

Perguntas

  • O desempenho visto pelos gráficos é razoável para um sistema deste calibre (leitura/gravação)?
  • Portanto, devo me concentrar em fazer uma atualização de hardware ou investigar mais profundamente o software (ajustes do kernel, confs, consultas etc.)?
  • Se estiver fazendo uma atualização de hardware, o número de discos é fundamental para o desempenho?

------------------------------ATUALIZAR------------------- ----------------

Agora atualizei meu servidor de banco de dados com quatro SSDs Intel 520 em vez dos antigos discos SAS de 15k. Estou usando o mesmo controlador de raid. As coisas melhoraram bastante, como você pode ver a seguir, o desempenho de E/S de pico melhorou cerca de 6 a 10 vezes - e isso é ótimo!. insira a descrição da imagem aqui No entanto, eu esperava algo mais como uma melhoria de 20 a 50 vezes de acordo com as respostas e os recursos de E/S dos novos SSDs. Então aqui vai outra pergunta.

Nova pergunta Há algo na minha configuração atual que está limitando o desempenho de E/S do meu sistema (onde está o gargalo)?

Minhas configurações:

/etc/postgresql/9.2/main/postgresql.conf

data_directory = '/var/lib/postgresql/9.2/main'
hba_file = '/etc/postgresql/9.2/main/pg_hba.conf'
ident_file = '/etc/postgresql/9.2/main/pg_ident.conf'
external_pid_file = '/var/run/postgresql/9.2-main.pid'
listen_addresses = '192.168.0.4, localhost'
port = 5432
unix_socket_directory = '/var/run/postgresql'
wal_level = hot_standby
synchronous_commit = on
checkpoint_timeout = 10min
archive_mode = on
archive_command = 'rsync -a %p [email protected]:/var/lib/postgresql/9.2/wals/%f </dev/null'
max_wal_senders = 1
wal_keep_segments = 32
hot_standby = on
log_line_prefix = '%t '
datestyle = 'iso, mdy'
lc_messages = 'en_US.UTF-8'
lc_monetary = 'en_US.UTF-8'
lc_numeric = 'en_US.UTF-8'
lc_time = 'en_US.UTF-8'
default_text_search_config = 'pg_catalog.english'
default_statistics_target = 100
maintenance_work_mem = 1920MB
checkpoint_completion_target = 0.7
effective_cache_size = 22GB
work_mem = 160MB
wal_buffers = 16MB
checkpoint_segments = 32
shared_buffers = 7680MB
max_connections = 400 

/etc/sysctl.conf

# sysctl config
#net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
# ipv6 settings (no autoconfiguration)
net.ipv6.conf.default.autoconf=0
net.ipv6.conf.default.accept_dad=0
net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.default.accept_ra_defrtr=0
net.ipv6.conf.default.accept_ra_rtr_pref=0
net.ipv6.conf.default.accept_ra_pinfo=0
net.ipv6.conf.default.accept_source_route=0
net.ipv6.conf.default.accept_redirects=0
net.ipv6.conf.default.forwarding=0
net.ipv6.conf.all.autoconf=0
net.ipv6.conf.all.accept_dad=0
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.all.accept_ra_defrtr=0
net.ipv6.conf.all.accept_ra_rtr_pref=0
net.ipv6.conf.all.accept_ra_pinfo=0
net.ipv6.conf.all.accept_source_route=0
net.ipv6.conf.all.accept_redirects=0
net.ipv6.conf.all.forwarding=0
# Updated according to postgresql tuning
vm.dirty_ratio = 10
vm.dirty_background_ratio = 1
vm.swappiness = 0
vm.overcommit_memory = 2
kernel.sched_autogroup_enabled = 0
kernel.sched_migration_cost = 50000000

/etc/sysctl.d/30-postgresql-shm.conf

# Shared memory settings for PostgreSQL
# Note that if another program uses shared memory as well, you will have to
# coordinate the size settings between the two.
# Maximum size of shared memory segment in bytes
#kernel.shmmax = 33554432
# Maximum total size of shared memory in pages (normally 4096 bytes)
#kernel.shmall = 2097152
kernel.shmmax = 8589934592
kernel.shmall = 17179869184
# Updated according to postgresql tuning

Saída deMegaCli64 -LDInfo -LAll -aAll

Adapter 0 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name                :
RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0
Size                : 446.125 GB
Sector Size         : 512
Is VD emulated      : No
Mirror Data         : 446.125 GB
State               : Optimal
Strip Size          : 64 KB
Number Of Drives per span:2
Span Depth          : 2
Default Cache Policy: WriteBack, ReadAhead, Direct, Write Cache OK if Bad BBU
Current Cache Policy: WriteBack, ReadAhead, Direct, Write Cache OK if Bad BBU
Default Access Policy: Read/Write
Current Access Policy: Read/Write
Disk Cache Policy   : Disk's Default
Encryption Type     : None
Is VD Cached: No
postgresql performance
  • 3 respostas
  • 32422 Views
Martin Hope
Kenneth Fisher
Asked: 2013-08-07 10:12:27 +0800 CST

Quando uma Porta Dinâmica é "dinâmica"?

  • 24

Eu estava tendo uma discussão hoje Dynamic Portscom um dos meus colegas de trabalho e poderia precisar de alguma ajuda para esclarecer como eles funcionam.

Primeira pergunta: Se a IPALL TCP Dynmaic Portsconfiguração for um número específico (digamos 1971), isso significa que você tem uma porta estática de 1971 ou uma porta dinâmica que atualmente é 1971 e pode mudar em algum momento no futuro.

insira a descrição da imagem aqui

Segunda pergunta: Essa é a que eu mais tenho curiosidade. Temos uma instância que tem a mesma porta (o valor na IPALL TCP Dynmaic Portsconfiguração) há vários anos por meio de dezenas de reinicializações de instância. O que realmente faz com que a porta dinâmica realmente mude após a reinicialização de uma instância?

sql-server dynamic-ports
  • 1 respostas
  • 36486 Views
Martin Hope
Lumpy
Asked: 2013-07-30 10:16:02 +0800 CST

Precisa entender o erro de execução de consulta paralela

  • 24

Hoje experimentamos uma degradação no desempenho em nosso servidor sql de produção. Durante o tempo em que isso ocorreu, registramos vários "The query processor could not start the necessary thread resources for parallel query execution"erros. A leitura que fiz sugere que isso tem a ver com quantas CPUs usar ao executar uma consulta complexa. No entanto, quando verifiquei durante a interrupção, nosso arquivo CPU Utilization was only at 7%. Existe alguma outra coisa que isso poderia estar se referindo também que eu ainda não encontrei? Este é um provável culpado da degradação do desempenho ou estou perseguindo um arenque vermelho?

Meus valores sp_configure para isso são os seguintes:

name                                minimum maximum config_value run_value
cost threshold for parallelism      0       32767   5            5
sql-server sql-server-2008-r2
  • 2 respostas
  • 33427 Views
Martin Hope
Matt S.
Asked: 2013-06-20 09:47:04 +0800 CST

Como selecionar linhas específicas se existir uma coluna ou todas as linhas se não houver uma coluna

  • 24

Estou escrevendo um script que obtém uma contagem de linhas para algumas tabelas, no entanto, para algumas tabelas, quero obter apenas uma contagem de linhas onde um sinalizador está definido (neste caso, ativo = 1). Existe uma maneira de fazer isso em uma consulta?

Por exemplo:

A tabela userstem uma coluna chamada ativa

A tabela clientsnão possui uma coluna chamada ativa

Eu quero obter uma contagem de usuários onde ativo = 1 e apenas obter uma contagem de clientes.

Antes de dizer "apenas codificar", esta é uma consulta que está dentro de um script python que pode ser executado em vários bancos de dados diferentes e não tenho como saber quais tabelas meu script selecionará e se elas têm uma coluna chamada active, e Eu preferiria ter apenas uma consulta para fazer tudo, em vez de duas separadas e depender do mysql para gerar um erro, para que eu saiba usar a outra.

mysql select
  • 3 respostas
  • 21968 Views
Martin Hope
BitBug
Asked: 2013-06-05 09:32:11 +0800 CST

Como posso redefinir um incremento automático de tabela mysql para 1 no phpMyAdmin?

  • 24

Eu sei que no MySQL na linha de comando posso redefinir o campo de incremento automático de uma tabela para 1 com isto:

ALTER TABLE tablename AUTO_INCREMENT = 1

Estou curioso para saber se existe uma maneira de fazer isso de dentro do phpMyAdmin. Algo como uma caixa de seleção para redefinir o incremento automático ou algo mais nesse sentido?

Não que haja algo de errado com a abordagem da linha de comando. Mais uma daquelas curiosidades que fico pensando... Obrigado desde já!

mysql phpmyadmin
  • 3 respostas
  • 173329 Views
Prev
Próximo

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