Visualizações do Aurora PostgreSQL Limitless Database - Amazon Aurora

Visualizações do Aurora PostgreSQL Limitless Database

A tabela a seguir mostra as novas visualizações do Aurora PostgreSQL Limitless Database.

nota

As visualizações listadas nessa tabela estão localizadas no esquema rds_aurora. Ao usar uma visualização do Limitless Database, inclua o nome do objeto totalmente qualificado: rds_aurora.object_name.

Visualização do Aurora PostgreSQL Limitless Database Visualização correspondente do Aurora PostgreSQL
limitless_database pg_database
limitless_locks pg_locks
limitless_stat_activity pg_stat_activity
limitless_stat_all_indexes pg_stat_all_indexes
limitless_stat_all_tables pg_stat_all_tables
limitless_stat_database pg_stat_database
limitless_stat_progress_vacuum pg_stat_progress_vacuum
limitless_stat_statements pg_stat_statements
limitless_stat_subclusters Nenhum
limitless_stat_statements_info pg_stat_statements_info
limitless_statio_all_indexes pg_statio_all_indexes
limitless_statio_all_tables pg_statio_all_tables
limitless_tables pg_tables
limitless_table_collocations Nenhum
limitless_table_collocation_distributions Nenhum

Os exemplos a seguir fornecem detalhes sobre as visualizações do Aurora PostgreSQL Limitless Database. Para obter mais informações sobre visualizações do PostgreSQL, consulte Viewing statistics na documentação do PostgreSQL.

nota

Algumas visualizações de estatísticas podem retornar resultados inconsistentes se você tiver transações em andamento.

limitless_database

Essa visualização contém informações sobre os bancos de dados disponíveis no grupo de fragmentos de banco de dados. Por exemplo:

postgres_limitless=> SELECT subcluster_id, subcluster_type, oid, datname, datacl FROM rds_aurora.limitless_database; subcluster_id | subcluster_type | oid | datname | datacl ---------------+-----------------+-------+--------------------+------------------------------------------------------------------------------------------------------------------------ 2 | router | 4 | template0 | {=c/rdsadmin,rdsadmin=CTc/rdsadmin} 2 | router | 5 | postgres | 2 | router | 16384 | rdsadmin | {rdsadmin=CTc/rdsadmin,rds_aurora_limitless_metadata_admin=c/rdsadmin,rds_aurora_limitless_heat_mgmt_admin=c/rdsadmin} 2 | router | 16477 | postgres_limitless | 2 | router | 1 | template1 | {=c/rdsadmin,rdsadmin=CTc/rdsadmin} 6 | shard | 4 | template0 | {=c/rdsadmin,rdsadmin=CTc/rdsadmin}

Os parâmetros de saída são os seguintes:

  • subcluster_id (texto): o ID do subcluster (nó)

  • subcluster_type (texto): o tipo de subcluster (nó), roteador ou fragmento

As demais colunas são as mesmas que em pg_database.

limitless_locks

Essa visualização contém uma linha por processo por nó. Ela fornece acesso às informações sobre os bloqueios mantidos pelos processos ativos no servidor do banco de dados.

exemplo de criação de um bloqueio com duas transações

Neste exemplo, executamos duas transações simultaneamente em dois roteadores.

# Transaction 1 (run on router 1) BEGIN; SET search_path = public; SELECT * FROM customers; INSERT INTO customers VALUES (400,'foo','bar'); # Transaction 2 (run on router 2) BEGIN; SET search_path = public; ALTER TABLE customers ADD COLUMN phone VARCHAR;

A primeira transação é executada. As transações subsequentes precisam esperar até que a primeira transação seja concluída. Portanto, a segunda transação é bloqueada com um bloqueio. Para verificar a causa raiz disso, executamos um comando unindo limitless_locks com limitless_stat_activity.

# Run on router 2 SELECT distributed_session_id, state, usename, query, query_start FROM rds_aurora.limitless_stat_activity WHERE distributed_session_id in ( SELECT distributed_session_id FROM rds_aurora.limitless_locks WHERE relname = 'customers' ); distributed_session_id | state | usename | query | query_start ------------------------+---------------------+--------------------------+---------------------------------- -------------+------------------------------- 47BDE66E9A5E8477 | idle in transaction | limitless_metadata_admin | INSERT INTO customers VALUES (400,'foo','bar'); | 2023-04-13 17:44:45.152244+00 2AD7F370202D0FA9 | active | limitless_metadata_admin | ALTER TABLE customers ADD COLUMN phone VARCHAR; | 2023-04-13 17:44:55.113388+00 47BDE66E9A5E8477 | | limitless_auth_admin | <insufficient privilege> | 2AD7F370202D0FA9 | | limitless_auth_admin | <insufficient privilege> | 47BDE66E9A5E8477 | | limitless_auth_admin | <insufficient privilege> | 2AD7F370202D0FA9 | | limitless_auth_admin | <insufficient privilege> | (6 rows)
exemplo de criação de um bloqueio de forma explícita

Neste exemplo, criamos um bloqueio explicitamente e, em seguida, usamos a visualização limitless_locks para ver os bloqueios (algumas colunas são omitidas).

BEGIN; SET search_path = public; LOCK TABLE customers IN ACCESS SHARE MODE; SELECT * FROM rds_aurora.limitless_locks WHERE relname = 'customers'; subcluster_id | subcluster_type | distributed_session_id | locktype | datname | relnspname | relname | virtualtransaction | pid | mode ---------------+-----------------+------------------------+----------+--------------------+------------+ ----------+--------------------+-------+----------------- 1 | router | 7207702F862FC937 | relation | postgres_limitless | public | customers | 28/600787 | 59564 | AccessShareLock 2 | router | 7207702F862FC937 | relation | postgres_limitless | public | customers | 28/600405 | 67130 | AccessShareLock 3 | shard | 7207702F862FC937 | relation | postgres_limitless | public | customers | 15/473401 | 27735 | AccessShareLock 4 | shard | 7207702F862FC937 | relation | postgres_limitless | public | customers | 13/473524 | 27734 | AccessShareLock 5 | shard | 7207702F862FC937 | relation | postgres_limitless | public | customers | 13/472935 | 27737 | AccessShareLock 6 | shard | 7207702F862FC937 | relation | postgres_limitless | public | customers | 13/473015 | 48660 | AccessShareLock (6 rows)
limitless_stat_activity

Essa visualização contém uma linha por processo por nó. Ela pode ser usada para monitorar a integridade geral do sistema e triar processos que estão demorando muito. Por exemplo:

postgres=# SELECT subcluster_id, subcluster_type, distributed_session_id, distributed_session_state, datname, distributed_query_id FROM rds_aurora.limitless_stat_activity WHERE distributed_session_id='7E4CBBD3E1AF9ABA'; subcluster_id | subcluster_type | distributed_session_id | distributed_session_state | datname | distributed_query_id ---------------+-----------------+------------------------+---------------------------+--------------------+ ---------------------- 1 | router | 7E4CBBD3E1AF9ABA | coordinator | postgres_limitless | 2 | router | 7E4CBBD3E1AF9ABA | participant | postgres_limitless | -8224553981424021413 3 | shard | 7E4CBBD3E1AF9ABA | participant | postgres_limitless | -8224553981424021413 4 | shard | 7E4CBBD3E1AF9ABA | participant | postgres_limitless | -8224553981424021413 5 | shard | 7E4CBBD3E1AF9ABA | participant | postgres_limitless | -8224553981424021413 6 | shard | 7E4CBBD3E1AF9ABA | participant | postgres_limitless | -8224553981424021413 (6 rows)

Os parâmetros de saída são os seguintes:

  • subcluster_id (texto): o ID do subcluster ao qual esse processo pertence.

  • subcluster_type (texto): o tipo de subcluster ao qual esse processo pertence: router ou shard.

  • distributed_session_id (texto): o ID da sessão distribuída à qual esse processo pertence.

  • distributed_session_state (texto): se este é um coordenador, participante ou processo autônomo/não distribuído (mostrado como NULL).

  • datname (texto): o banco de dados ao qual esse processo está conectado.

  • distributed_query_id (bigint): o ID da consulta principal do nó coordenador. Essa coluna é NULL se for a consulta principal. O nó coordenador envia o ID da consulta distribuída para os nós participantes. Portanto, para os nós participantes, os valores para o ID de consulta distribuída e o ID de consulta são diferentes.

As demais colunas são as mesmas que em pg_stat_activity.

limitless_stat_all_indexes

Essa visualização contém estatísticas de uso em índices no grupo de fragmentos de banco de dados. Por exemplo:

postgres_limitless=> SELECT schemaname, relname, indexrelname, idx_scan FROM rds_aurora.limitless_stat_all_indexes WHERE relname LIKE 'orders_ts%' ORDER BY indexrelname LIMIT 10; schemaname | relname | indexrelname | idx_scan ------------+----------------+---------------------+---------- ec_sample | orders_ts00001 | orders_ts00001_pkey | 196801 ec_sample | orders_ts00002 | orders_ts00002_pkey | 196703 ec_sample | orders_ts00003 | orders_ts00003_pkey | 196376 ec_sample | orders_ts00004 | orders_ts00004_pkey | 197966 ec_sample | orders_ts00005 | orders_ts00005_pkey | 195301 ec_sample | orders_ts00006 | orders_ts00006_pkey | 195673 ec_sample | orders_ts00007 | orders_ts00007_pkey | 194475 ec_sample | orders_ts00008 | orders_ts00008_pkey | 191694 ec_sample | orders_ts00009 | orders_ts00009_pkey | 193744 ec_sample | orders_ts00010 | orders_ts00010_pkey | 195421 (10 rows)
limitless_stat_all_tables

Essa visualização contém estatísticas sobre todas as tabelas no banco de dados atual no grupo de fragmentos de banco de dados. Isso é útil ao rastrear operações de limpeza e operações de Linguagem de Manipulação de Dados (DML). Por exemplo:

postgres_limitless=> SELECT subcluster_id, subcluster_type, relname, n_ins_since_vacuum, n_tup_ins, last_vacuum FROM rds_aurora.limitless_stat_all_tables WHERE relname LIKE 'orders_ts%' ORDER BY relname LIMIT 10; subcluster_id | subcluster_type | relname | n_ins_since_vacuum | n_tup_ins | last_vacuum ---------------+-----------------+----------------+--------------------+-----------+------------- 5 | shard | orders_ts00001 | 34779 | 196083 | 5 | shard | orders_ts00002 | 34632 | 194721 | 5 | shard | orders_ts00003 | 34950 | 195965 | 5 | shard | orders_ts00004 | 34745 | 197283 | 5 | shard | orders_ts00005 | 34879 | 195754 | 5 | shard | orders_ts00006 | 34340 | 194605 | 5 | shard | orders_ts00007 | 33779 | 192203 | 5 | shard | orders_ts00008 | 33826 | 191293 | 5 | shard | orders_ts00009 | 34660 | 194117 | 5 | shard | orders_ts00010 | 34569 | 195560 | (10 rows)

Os parâmetros de saída são os seguintes:

  • subcluster_id (texto): o ID do subcluster ao qual esse processo pertence.

  • subcluster_type (texto): o tipo de subcluster ao qual esse processo pertence: router ou shard.

  • relname (nome): o nome da tabela.

As demais colunas são as mesmas que em pg_stat_all_tables.

limitless_stat_database

Essa visualização contém estatísticas sobre todos os bancos de dados no grupo de fragmentos de banco de dados. Retorna uma linha por banco de dados por nó. Por exemplo:

postgres_limitless=> SELECT subcluster_id, subcluster_type, datname, blks_read, blks_hit FROM rds_aurora.limitless_stat_database WHERE datname='postgres_limitless'; subcluster_id | subcluster_type | datname | blks_read | blks_hit ---------------+-----------------+--------------------+-----------+---------- 1 | router | postgres_limitless | 484 | 34371314 2 | router | postgres_limitless | 673 | 33859317 3 | shard | postgres_limitless | 1299 | 17749550 4 | shard | postgres_limitless | 1094 | 17492849 5 | shard | postgres_limitless | 1036 | 17485098 6 | shard | postgres_limitless | 1040 | 17437257 (6 rows)

Os parâmetros de saída são os seguintes:

  • subcluster_id (texto): o ID do subcluster ao qual esse processo pertence.

  • subcluster_type (texto): o tipo de subcluster ao qual esse processo pertence: router ou shard.

  • datname (nome): o nome do banco de dados.

As demais colunas são as mesmas que em pg_stat_database.

limitless_stat_progress_vacuum

Essa visualização contém informações sobre as operações de limpeza em andamento. Por exemplo:

postgres_limitless=> SELECT * FROM rds_aurora.limitless_stat_progress_vacuum; -[ RECORD 1 ]----------+------------------ subcluster_id | 3 subcluster_type | shard distributed_session_id | A56D96E2A5C9F426 pid | 5270 datname | postgres nspname | public relname | customer_ts2 phase | vacuuming heap heap_blks_total | 130500 heap_blks_scanned | 100036 heap_blks_vacuumed | 0 index_vacuum_count | 0 max_dead_tuples | 11184810 num_dead_tuples | 0 -[ RECORD 2 ]----------+------------------ subcluster_id | 3 subcluster_type | shard distributed_session_id | 56DF26A89EC23AB5 pid | 6854 datname | postgres nspname | public relname | sales_ts1 phase | vacuuming heap heap_blks_total | 43058 heap_blks_scanned | 24868 heap_blks_vacuumed | 0 index_vacuum_count | 0 max_dead_tuples | 8569523 num_dead_tuples | 0

Os parâmetros de saída são os seguintes:

  • subcluster_id (texto): o ID do subcluster ao qual esse processo pertence.

  • subcluster_type (texto): o tipo de subcluster ao qual esse processo pertence: router ou shard.

  • distributed_session_id (texto): o identificador da sessão que iniciou a operação de limpeza.

  • datname (nome): o banco de dados em que a limpeza está sendo feita.

  • nspname (nome): o nome do esquema da tabela que está sendo limpa. É null se a tabela que está sendo limpa não estiver no mesmo banco de dados ao qual o usuário está conectado.

  • relname (nome): o nome da tabela que está sendo limpa. É null se a tabela que está sendo limpa não estiver no mesmo banco de dados ao qual o usuário está conectado.

As demais colunas são as mesmas que em pg_stat_progress_vacuum.

limitless_stat_statements

Essa visualização fornece um meio de rastrear o planejamento e a execução de estatísticas de todas as instruções SQL executadas em todos os nós.

nota

É necessário instalar a extensão pg_stat_statements para usar a visualização limitless_stat_statements.

-- CREATE EXTENSION must be run by a superuser CREATE EXTENSION pg_stat_statements; -- Verify that the extension is created on all nodes in the DB shard group SELECT distinct node_id FROM rds_aurora.limitless_stat_statements LIMIT 10;

O exemplo a seguir mostra o uso da visualização limitless_stat_statements.

postgres_limitless=> SELECT subcluster_id, subcluster_type, distributedqueryid, username, dbname FROM rds_aurora.limitless_stat_statements; subcluster_id | subcluster_type | distributedqueryid | username | dbname ---------------+-----------------+---------------------+---------------------------------+------------------- 1 | router | | postgres | postgres_limitless 1 | router | | postgres | postgres_limitless 1 | router | | postgres | postgres_limitless 1 | router | 5103284549693281378 | aurora_limitless_metadata_admin | postgres_limitless 1 | router | | postgres | postgres_limitless 1 | router | | aurora_limitless_metadata_admin | postgres_limitless 1 | router | | postgres | postgres_limitless 1 | router | | postgres | postgres_limitless [...]

Os parâmetros de saída são os seguintes:

  • subcluster_id (texto): o ID do subcluster ao qual esse processo pertence.

  • subcluster_type (texto): o tipo de subcluster ao qual esse processo pertence: router para ou shard.

  • distributedqueryid (bigint): o ID da consulta principal do nó coordenador. Essa coluna é NULL se for a consulta principal. O nó coordenador envia o ID da consulta distribuída para os nós participantes. Portanto, para os nós participantes, os valores para o ID de consulta distribuída e o ID de consulta são diferentes.

  • username (nome): o usuário que consultou a instrução.

  • dbname (nome): o banco de dados onde a consulta foi executada.

As demais colunas são as mesmas que em pg_stat_statements.

limitless_stat_statements_info

Essa visualização contém estatísticas para a visualização limitless_stat_statements. Cada linha contém dados para a visualização pg_stat_statements_info de cada nó. A coluna subcluster_id identifica cada nó.

postgres_limitless=> SELECT * FROM rds_aurora.limitless_stat_statements_info; subcluster_id | subcluster_type | dealloc | stats_reset ---------------+-----------------+---------+------------------------------- 1 | router | 0 | 2023-06-30 21:22:09.524781+00 2 | router | 0 | 2023-06-30 21:21:40.834111+00 3 | shard | 0 | 2023-06-30 21:22:10.709942+00 4 | shard | 0 | 2023-06-30 21:22:10.740179+00 5 | shard | 0 | 2023-06-30 21:22:10.774282+00 6 | shard | 0 | 2023-06-30 21:22:10.808267+00 (6 rows)

O parâmetro de saída é o seguinte:

  • subcluster_id (texto): o ID do subcluster ao qual esse processo pertence.

As demais colunas são as mesmas que em pg_stat_statements_info.

limitless_stat_subclusters

Essa visualização contém estatísticas de rede entre roteadores e outros nós. Ela contém uma linha por par de roteador e outro nó, por exemplo:

postgres_limitless=> SELECT * FROM rds_aurora.limitless_stat_subclusters; orig_subcluster | orig_instance_az | dest_subcluster | dest_instance_az | latency_us | latest_collection | failed_requests | received_bytes | sent_bytes | same_az_requests | cross_az_requests | stat_reset_timestamp -----------------+------------------+-----------------+------------------+------------+-------------------------------+-----------------+----------------+------------+------------------+-------------------+------------------------------- 3 | us-west-2b | 2 | us-west-2a | 847 | 2024-10-07 17:25:39.518617+00 | 0 | 35668633 | 92090171 | 0 | 302787 | 2024-10-05 12:39:55.239675+00 3 | us-west-2b | 4 | us-west-2b | 419 | 2024-10-07 17:25:39.546376+00 | 0 | 101190464 | 248795719 | 883478 | 0 | 2024-10-05 12:39:55.231218+00 3 | us-west-2b | 5 | us-west-2c | 1396 | 2024-10-07 17:25:39.52122+00 | 0 | 72864849 | 172086292 | 0 | 557726 | 2024-10-05 12:39:55.196412+00 3 | us-west-2b | 6 | us-west-2c | 729 | 2024-10-07 17:25:39.54828+00 | 0 | 35668584 | 92090171 | 0 | 302787 | 2024-10-05 12:39:55.247334+00 3 | us-west-2b | 7 | us-west-2a | 1702 | 2024-10-07 17:25:39.545307+00 | 0 | 71699576 | 171634844 | 0 | 556278 | 2024-10-05 12:39:52.715168+00 2 | us-west-2a | 3 | us-west-2b | 868 | 2024-10-07 17:25:40.293927+00 | 0 | 35659611 | 92011872 | 0 | 302817 | 2024-10-05 12:39:54.420758+00 2 | us-west-2a | 4 | us-west-2b | 786 | 2024-10-07 17:25:40.296863+00 | 0 | 102437253 | 251838024 | 0 | 895060 | 2024-10-05 12:39:54.404081+00 2 | us-west-2a | 5 | us-west-2c | 1232 | 2024-10-07 17:25:40.292021+00 | 0 | 71990027 | 168828110 | 0 | 545453 | 2024-10-05 12:39:36.769549+00

Os parâmetros de saída são os seguintes:

  • orig_subcluster (texto): o ID do roteador de onde as comunicações se originam

  • orig_subcluster_az (texto): a zona de disponibilidade (AZ) do roteador de origem

  • dest_subcluster (texto): o ID do nó de destino

  • dest_subcluster_az (texto): a última AZ coletada do nó de destino

  • latency_us (bigint): a última latência de rede coletada entre os nós, em microssegundos. O valor é 0 se o nó estiver inacessível.

  • latest_collection (data e hora): a data e hora da coleta mais recente de AZ e latência para o nó de destino

  • failed_requests (bigint): a contagem cumulativa de solicitações internas com falha

  • received_bytes (bigint): o número cumulativo estimado de bytes recebidos desse nó

  • sent_bytes (bigint): o número cumulativo estimado de bytes enviados para esse nó

  • same_az_requests (bigint): o número cumulativo de solicitações internas de banco de dados para esse nó quando ele está na mesma AZ do roteador de origem

  • cross_az_requests (bigint): o número cumulativo de solicitações internas de banco de dados para esse nó quando ele está em uma AZ diferente do roteador de origem

  • stat_reset_timestamp (data e hora): a data e hora de quando as estatísticas cumulativas dessa visualização foram redefinidas pela última vez

limitless_statio_all_indexes

Essa visualização contém estatísticas de entrada/saída (E/S) de todos os índices do grupo de fragmentos de banco de dados. Por exemplo:

postgres_limitless=> SELECT * FROM rds_aurora.limitless_statio_all_indexes WHERE relname like'customers_ts%'; subcluster_id | subcluster_type | schemaname | relname | indexrelname | idx_blks_read | idx_blks_hit ---------------+-----------------+------------+-------------------+-------------------------------------+ --------------+-------------- 3 | shard | public | customers_ts00002 | customers_ts00002_customer_name_idx | 1 | 0 3 | shard | public | customers_ts00001 | customers_ts00001_customer_name_idx | 1 | 0 4 | shard | public | customers_ts00003 | customers_ts00003_customer_name_idx | 1 | 0 4 | shard | public | customers_ts00004 | customers_ts00004_customer_name_idx | 1 | 0 5 | shard | public | customers_ts00005 | customers_ts00005_customer_name_idx | 1 | 0 5 | shard | public | customers_ts00006 | customers_ts00006_customer_name_idx | 1 | 0 6 | shard | public | customers_ts00007 | customers_ts00007_customer_name_idx | 1 | 0 6 | shard | public | customers_ts00008 | customers_ts00008_customer_name_idx | 1 | 0 (8 rows)
limitless_statio_all_tables

Essa visualização contém estatísticas de entrada/saída (E/S) de todas as tabelas do grupo de fragmentos de banco de dados. Por exemplo:

postgres_limitless=> SELECT subcluster_id, subcluster_type, schemaname, relname, heap_blks_read, heap_blks_hit FROM rds_aurora.limitless_statio_all_tables WHERE relname LIKE 'customers_ts%'; subcluster_id | subcluster_type | schemaname | relname | heap_blks_read | heap_blks_hit ---------------+-----------------+------------+-------------------+----------------+--------------- 3 | shard | public | customers_ts00002 | 305 | 57780 3 | shard | public | customers_ts00001 | 300 | 56972 4 | shard | public | customers_ts00004 | 302 | 57291 4 | shard | public | customers_ts00003 | 302 | 57178 5 | shard | public | customers_ts00006 | 300 | 56932 5 | shard | public | customers_ts00005 | 302 | 57386 6 | shard | public | customers_ts00008 | 300 | 56881 6 | shard | public | customers_ts00007 | 304 | 57635 (8 rows)
limitless_tables

Essa visualização contém informações sobre tabelas no Aurora PostgreSQL Limitless Database.

postgres_limitless=> SELECT * FROM rds_aurora.limitless_tables; table_gid | local_oid | schema_name | table_name | table_status | table_type | distribution_key -----------+-----------+-------------+-------------+--------------+-------------+------------------ 5 | 18635 | public | placeholder | active | placeholder | 6 | 18641 | public | ref | active | reference | 7 | 18797 | public | orders | active | sharded | HASH (order_id) 2 | 18579 | public | customer | active | sharded | HASH (cust_id) (4 rows)
limitless_table_collocations

Essa visualização contém informações sobre tabelas fragmentadas colocalizadas.

No exemplo a seguir, as tabelas orders e customers são colocalizadas, e as tabelas users e followers são colocalizadas. As tabelas colocalizadas têm o mesmo collocation_id.

postgres_limitless=> SELECT * FROM rds_aurora.limitless_table_collocations ORDER BY collocation_id; collocation_id | schema_name | table_name ----------------+-------------+------------ 2 | public | orders 2 | public | customers 5 | public | users 5 | public | followers (4 rows)
limitless_table_collocation_distributions

Essa visualização mostra a distribuição de chaves para cada colocação.

postgres_limitless=> SELECT * FROM rds_aurora.limitless_table_collocation_distributions ORDER BY collocation_id, lower_bound; collocation_id | subcluster_id | lower_bound | upper_bound ----------------+---------------+----------------------+---------------------- 2 | 6 | -9223372036854775808 | -4611686018427387904 2 | 5 | -4611686018427387904 | 0 2 | 4 | 0 | 4611686018427387904 2 | 3 | 4611686018427387904 | 9223372036854775807 5 | 6 | -9223372036854775808 | -4611686018427387904 5 | 5 | -4611686018427387904 | 0 5 | 4 | 0 | 4611686018427387904 5 | 3 | 4611686018427387904 | 9223372036854775807 (8 rows)