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
mvorisek
Asked: 2023-11-09 01:17:53 +0800 CST

Por que o Oracle Database arredonda números menores que `1e-130`

  • 4

Esse comportamento está documentado em algum lugar e a precisão dupla total pode ser ativada?

consultas de reprodução:

select 1e-130; /* 0.0...1 result */
select 1e-131; /* 0 result */

reprodução online: https://dbfiddle.uk/5uwlkJaB

oracle
  • 1 respostas
  • 35 Views
Martin Hope
user1117605
Asked: 2023-11-08 21:02:37 +0800 CST

Problemas de desempenho com o operador @> no postgres 14

  • 5
CREATE TABLE public.article (
    id uuid NOT NULL,
    tags _text NULL,
    CONSTRAINT article_pkey PRIMARY KEY (id)
);

Tenho o requisito de carregar artigos que possuam uma tag que esteja em uma lista grande (pelo menos 300 tags) do banco de dados:

SELECT * FROM public.cms_article where tags @> ARRAY['my_long_extra_long_tag_1', '...', '...', 'my_long_extra_long_tag_300'];

Mas tenho um problema de desempenho. Alguém tem experiência com tal requisito? Qual índice seria o melhor? O número de artigos é inferior a 5.000.

postgresql
  • 1 respostas
  • 34 Views
Martin Hope
Imre Bertalan
Asked: 2023-11-08 19:09:34 +0800 CST

MariaDB Galera Cluster (10.6.12) e problema do Laravel WSREP

  • 5

Estou administrando um cluster galera com 3 nós, servindo uma aplicação Laravel e o HAProxy é a porta de entrada para o cluster. Tivemos um problema interessante e não consigo descobrir por que houve uma mensagem de erro no aplicativo Laravel. Aqui está o que eu sei: Às 13:25:36 havia uma nota no Nó1, que ... connection to peer f3e3XXXX-XXX with addr tcp://X.X.X.X:4567 timed out, no messages seen in PT3S, ...Este IP representa o Nó2. Aproximadamente no mesmo horário 13:25:37, no Nó2, a seguinte mensagem apareceu nos logs ... WSREP: (f3e3XXXX-XXX, 'tcp://X.X.X.X:4567') turning message relay requesting on, nonlive peers: tcp://X.X.X.X:4567 ...Este 2º IP representa o Nó1. Postarei um registro mais detalhado posteriormente na postagem.

Portanto, meu entendimento é que poderia ter havido um problema de rede entre os clusters e o Nó2 (e 3) teve que se juntar novamente ao cluster. Enquanto isso, alguém acionou o aplicativo Larave que fez uma consulta ao cluster. Mas esta solicitação acabou em uma mensagem de erro dizendo:[2023-11-07 13:25:46] production.ERROR: SQLSTATE[08S01]: Communication link failure: 1047 WSREP has not yet prepared node for application use .....

Se meu entendimento de como um cluster deve funcionar estiver correto, não tenho ideia do que aconteceu. O cluster galera não deveria ser capaz de gerenciar se um nó desaparecer do cluster e usar um nó existente para lidar com a consulta recebida? Talvez esse fosse um problema do HAProxy e ele não conseguiu detectar que os Node2 e 3 estão indisponíveis e enviou a consulta para lá de qualquer maneira?

Esse problema permaneceu por cerca de 10 segundos e o cluster está funcionando bem desde então (acho que ... wsrep_cluster_sizeé 3ATM, então deve estar OK).

Agora não quero " enviar spam " para esta postagem com todos os logs, então inserirei os logs dos Node1 e 2 no pastebin e URLs serão fornecidos.

!!! Alguém pode me explicar o que aconteceu exatamente nesta situação? Talvez uma maneira de evitar isso no futuro? !!!

Agradeço antecipadamente !

Registros do MariaDB: https://pastebin.com/SpDbe7Bb

Registros do Laravel: [2023-11-07 13:25:46] production.ERROR: SQLSTATE[08S01]: Communication link failure: 1047 WSREP has not yet prepared node for application use (SQL: select * from .......) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 08S01): SQLSTATE[08S01]: Communication link failure: 1047 WSREP has not yet prepared node for application use (SQL: select * from .......) at /var/www/html/myproject/releases/184/vendor/laravel/framework/src/Illuminate/Database/Connection.php:671)

mariadb
  • 1 respostas
  • 16 Views
Martin Hope
blindsnowmobile
Asked: 2023-11-08 11:35:54 +0800 CST

Quão grande você pode definir track_activity_query_size sem incorrer em problemas de desempenho?

  • 6

Temos algumas consultas bastante grandes em nosso banco de dados postgresql (13.8) de produção que excedem o padrão 1024 para track_activity_query_size(algumas consultas têm mais de 100k). Aumentei esse valor para 8192, mas ele ainda não captura algumas de nossas consultas.

Estou me perguntando:

  1. Quão alto posso definir isso razoavelmente (li que 1 MB é o máximo) sem incorrer em problemas de desempenho?
  2. Quais métricas posso monitorar para rastrear se eu definir um valor muito alto?

Eu gostaria de defini-lo para 256k, ou possivelmente mais, mas parece que pode ser excessivo.

postgresql
  • 1 respostas
  • 20 Views
Martin Hope
Paul
Asked: 2023-11-08 03:56:00 +0800 CST

taxa de transferência de leitura do spark-cassandra-connector imprevisível

  • 5

Um usuário relata que a taxa de transferência da consulta de intervalo é muito maior do que o esperado ao definir spark.cassandra.input.readsPerSec no conector spark-cassandra.

Dependências de trabalho. A versão do driver Java está definida como 4.13.0.

    <dependency>
        <groupId>com.datastax.spark</groupId>
        <artifactId>spark-cassandra-connector_2.12</artifactId>
        <version>3.2.0</version>
        <exclusions>
            <exclusion>
                <groupId> com.datastax.oss</groupId>
                <artifactId>java-driver-core-shaded</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

...

    <dependency>
        <groupId>com.datastax.oss</groupId>
        <artifactId>java-driver-core</artifactId>
        <version>4.13.0</version>
    </dependency>

Existem duas etapas no trabalho (ambas do STF):

Dataset<Row> dataset = sparkSession.sqlContext().read()
.format("org.apache.spark.sql.cassandra")
.option("table", "inbox_user_msg_dummy")
.option("keyspace", "ssmp_inbox2").load();

-e-

Dataset<Row> olderDataset = sparkSession.sql("SELECT * FROM inbox_user_msg_dummy where app_uuid = 'cb663e07-7bcc-4039-ae97-8fb8e8a9ff77' AND " +
"create_hour < '" + minus180DaysInstant + "'");

Configuração do trabalho:

SparkConf sparkConf = new SparkConf()
        .setMaster("local[*]") //uncomment while running in local
        .setAppName("inbox-gateway-spark-job")
       .set("spark.scheduler.mode", "FAIR")
        .set("spark.cassandra.connection.port", "9042")
        .set("keyspace", "ssmp_inbox2")
        .set("spark.cassandra.connection.host", "cass-556799284-1-1276056270.stg.ssmp-inbox2-stg.ms-df-cassandra.stg-az-southcentralus-6.prod.us.walmart.net,
        cass-556799284-2-1276056276.stg.ssmp-inbox2-stg.ms-df-cassandra.stg-az-southcentralus-6.prod.us.walmart.net,
        cass-556799284-3-1276056282.stg.ssmp-inbox2-stg.ms-df-cassandra.stg-az-southcentralus-6.prod.us.walmart.net")
        .set("spark.cassandra.auth.username", "ssmp-inbox-app-v2")
        .set("spark.cassandra.auth.password", "*")
        .set("spark.cassandra.input.consistency.level", "LOCAL_ONE")
        .set("spark.cassandra.concurrent.reads", "1")
        .set("spark.cassandra.input.readsPerSec", "10")
        .set("spark.cassandra.input.fetch.sizeInRows", "10")
        .set("spark.cassandra.input.split.sizeInMB", "10")
        .set("spark.cores.max", "20")
        .set("spark.executor.memory", "20G")
        .set("spark.yarn.executor.memoryOverhead", "12000")
        .set("spark.cassandra.read.timeoutMS", "200000")
        .set("spark.task.maxFailures", "10")
        .set("spark.cassandra.connection.localDC", "southcentral");

Observe que o Spark está limitando os núcleos reais a 16 porque os trabalhadores têm 8 núcleos. Existe 1 executor.

Quando o trabalho é executado, observa-se que há aproximadamente 22 mil consultas/s de intervalo para o primeiro FTS quase saturando a CPU no cluster, e para o segundo FTS, há aproximadamente 725 consultas/s de intervalo na tabela.

A expectativa é que, com um total de 16 núcleos Spark, o rendimento da consulta de intervalo seja limitado a 160/s (spark.cassandra.input.readsPerSec * spark cores).

Este raciocínio está correto? Qual é a recomendação para controlar a taxa de transferência de leitura do conector spark-cassandra?

Eu sei que outros usuários já configuraram esse acelerador com sucesso antes, mas nunca analisamos atentamente qual é o rendimento resultante. Esta parece ser uma grande discrepância porque as duas etapas estão essencialmente executando a mesma operação - uma varredura completa da tabela. As consultas que o conector executa são as mesmas.

O esquema:

CREATE TABLE ssmp_inbox2.inbox_user_msg_dummy (    
  user_id text,    
  create_hour timestamp,    
  app_uuid text,    
  message_id text,    
  app_name text,    
  create_ts bigint,    
  is_actiontaken boolean,    
  is_compensable boolean,    
  is_deleted boolean,    
  is_read boolean,    
  message_payload text,    
  mini_app_name text,    
  notification text,    
  PRIMARY KEY ((user_id, create_hour, app_uuid), message_id)    
) WITH CLUSTERING ORDER BY (message_id DESC)    
  AND additional_write_policy = '99p'    
  AND bloom_filter_fp_chance = 0.01    
  AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}    
  AND cdc = false    
  AND comment = ''    
  AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}    
  AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}    
  AND crc_check_chance = 1.0    
  AND default_time_to_live = 0    
  AND extensions = {}    
  AND gc_grace_seconds = 864000    
  AND max_index_interval = 2048    
  AND memtable_flush_period_in_ms = 0    
  AND min_index_interval = 128
  AND read_repair = 'BLOCKING'
  AND speculative_retry = '99p';

A pergunta:

SELECT * FROM ssmp_inbox2.inbox_user_msg_dummy WHERE token(user_id, create_hour, app_uuid) >= token(G9e7Y4Y, 2023-08-10T04:17:27.234Z, cb663e07-7bcc-4039-ae97-8fb8e8a9ff77) AND token(user_id, create_hour, app_uuid) <= 9121832956220923771 LIMIT 10

FWIW, o tamanho médio da partição é 649 bytes, o máximo é 2,7kb.

cassandra
  • 1 respostas
  • 23 Views
Martin Hope
Andrey
Asked: 2023-11-08 02:37:31 +0800 CST

Cassandra dsbulk carregando dados com valores nulos não os implementa

  • 5

Eu tenho uma tabela com 2 campos:, id (primary key) fld_1 texttenho 1 linha na tabela de destino, por exemplo 1 'hello world', e tenho um arquivo tsv de origem com 1 linha 1\t:. Depois de carregar na tabela de destino, espero ver 1 null, mas os dados não mudam e ainda recebo 1 'hello world' a configuração que 'dsbulk.schema.nullToUnset': 'false'me ajudou, mas me parece que não é a melhor solução. Existem maneiras adequadas de carregar dados com valores nulos ou a solução fornecida está tudo bem?

cassandra
  • 1 respostas
  • 26 Views
Martin Hope
Patrick
Asked: 2023-11-08 00:26:55 +0800 CST

Transações abertas do SQL Server

  • 5

Fui notificado de que a unidade de log de transações de uma instância SQL que gerencio está sendo preenchida. Comecei, descobri qual log de transações estava crescendo e fui ver por que o tlog estava crescendo. Olhando para sys.databases, a descrição de reutilização de log era active_transaction. Não é grande coisa, imaginei que poderia dar uma olhada e encontrar a sessão que executa a transação no banco de dados e descobrir os próximos passos. Este é um banco de dados de desenvolvimento, então presumi que um desenvolvedor deixou uma transação aberta e eu só precisaria entrar em contato e fechar a transação.

Agora vamos às coisas estranhas. Usei DBCC OPENTRAN para encontrar a transação aberta mais antiga no banco de dados, há duas curiosidades na saída.

  1. O ID da sessão está listado como 53s, nunca vi um ID de sessão com uma letra,
  2. O horário de início da transação é a partir de 03/11/2023, mas o servidor foi reiniciado em 06/11/2023.

Acho que posso colocar o banco de dados no modo de usuário único com reversão imediata e depois voltar ao modo multiusuário, e isso resolverá o problema. Estou adiando isso por enquanto, porque não entendo o que aconteceu, ou como e diabos as coisas acabaram assim.

sql-server
  • 1 respostas
  • 42 Views
Martin Hope
Labs
Asked: 2023-11-07 22:04:58 +0800 CST

Reverter uma transação se uma leitura retornar um valor diferente no momento da confirmação

  • 5

Quero um determinado comportamento para transações no Postgresql, mas não sei dizer se é possível. Eu descreveria esse comportamento como “Bloqueio de leitura otimista”, mas esse não parece ser o termo certo para isso.

Aqui está o comportamento que eu quero:

  1. Minha transação começa. Seu nível de isolamento de transação é “leitura repetível” ou “serializável”.
  2. Na transação eu li a linha A.
  3. Na transação, leio e escrevo mais um pouco, mas nunca atualizo a linha A.
  4. Tento confirmar a transação.

Agora preciso que a transação falhe, se a linha A tiver sido alterada por alguma outra transação durante o tempo de vida da minha transação. Se a linha A não foi alterada, desejo que a transação seja confirmada.

Existe uma maneira de fazer isso no Postgresql?

Minha abordagem alternativa seria atualizar a linha A com algum valor aleatório na minha transação, para forçar um conflito de gravação. No entanto, isso significaria muitos conflitos desnecessários, porque sem forçar conflitos, a linha A raramente seria atualizada, mas frequentemente lida.

postgresql
  • 1 respostas
  • 39 Views
Martin Hope
zor
Asked: 2023-11-07 19:40:13 +0800 CST

Qual é o melhor design de banco de dados ao armazenar documentos de diferentes estruturas para os usuários?

  • 5

O requisito é: Os usuários devem ser capazes de definir a estrutura do documento que desejam armazenar.

Por exemplo, um usuário pode decidir armazenar um extrato bancário com a seguinte estrutura:

  • data_post (data)
  • detalhes (texto)
  • débito (número)
  • crédito (número)
  • data_valor (data)
  • referência (texto)

em seguida, selecione um arquivo para carregar no banco de dados.

Outro usuário ou o mesmo usuário também pode carregar um documento diferente com uma estrutura diferente.

Se conhecermos todas as diferentes estruturas de documentos disponíveis, podemos criar todas as tabelas do banco de dados, mas o sistema deve ser tal que o usuário possa carregar qualquer tipo de documento, e definir suas próprias estruturas.

Estou procurando uma maneira de salvar todas as linhas dos documentos em uma única tabela, se possível. Ou devo criar dinamicamente uma nova tabela quando o usuário definir uma nova estrutura de documento para carregar? É este o melhor caminho?

database-design
  • 2 respostas
  • 53 Views
Martin Hope
Matthias L
Asked: 2023-11-07 15:05:31 +0800 CST

Como os relatórios do Query Store do SQL Server podem mostrar dados em intervalos de minutos, quando o "Intervalo de coleta de estatísticas" está definido como 1 hora?

  • 8

Nas propriedades do banco de dados em Query Store, o "Intervalo de coleta de estatísticas" é definido como 1 hora. Isso também é confirmado consultando a visualização query_store_runtime_stats_interval- todos os intervalos abrangem exatamente 1 hora. No entanto, ao visualizar relatórios como “Consumo geral de recursos”, é possível selecionar “Minuto” no menu suspenso “Tamanho da agregação” e mostra dados que parecem plausíveis.

Consegui capturar uma consulta usada no "Relatório de principais consultas que consomem recursos" e parece que ele exibe todos os planos, que também foram executados no intervalo selecionado de 1 minuto, mas as estatísticas ainda parecem se referir ao intervalo completo de coleta. Portanto, meu palpite seria não confiar em nada para intervalos menores que o intervalo de coleta. Estou correto ou os relatórios mostram dados confiáveis?

SELECT TOP (@results_row_count)      
    p.query_id query_id
    , q.object_id object_id
    , ISNULL(OBJECT_NAME(q.object_id),'') object_name
    , qt.query_sql_text query_sql_text
    , ROUND(CONVERT(float, SUM(rs.avg_duration*rs.count_executions))*0.001,2) total_duration
    , SUM(rs.count_executions) count_executions
    , COUNT(distinct p.plan_id) num_plans 
FROM sys.query_store_runtime_stats rs      
JOIN sys.query_store_plan p ON p.plan_id = rs.plan_id      
JOIN sys.query_store_query q ON q.query_id = p.query_id      
JOIN sys.query_store_query_text qt ON q.query_text_id = qt.query_text_id  
WHERE NOT (rs.first_execution_time > @interval_end_time OR rs.last_execution_time < @interval_start_time)  
GROUP BY p.query_id, qt.query_sql_text, q.object_id  
HAVING COUNT(distinct p.plan_id) >= 1  
ORDER BY total_duration DESC

Propriedades do banco de dados/armazenamento de consultas

Relatar o consumo geral de recursos

sql-server
  • 2 respostas
  • 87 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