标签: cockroachdb

CockroachDB 两阶段提交有阻塞还是无阻塞?

两阶段提交应该会遇到阻塞问题。CockroachDB 是否就是这种情况?如果不是,如何避免?

cockroachdb

3
推荐指数
1
解决办法
781
查看次数

使用带有索引的两列SELECT进行SELECT非常慢

在我的Cockroach数据库中有一个包含以下定义的表:

CREATE TABLE foo_value (
    foo_id_a INT NOT NULL,
    foo_id_b INT NOT NULL,
    value FLOAT NULL,
    create_date_time TIMESTAMP NULL,
    update_date_time TIMESTAMP NULL,
    CONSTRAINT "primary" PRIMARY KEY (foo_id_a ASC, foo_id_b ASC),
    INDEX foo_value_foo_id_a_foo_id_b_idx (foo_id_a ASC, foo_id_b ASC),
    INDEX foo_id_a_idx (foo_id_a ASC),
    INDEX foo_id_b_idx (foo_id_b ASC),
    FAMILY "primary" (foo_id_a, foo_id_b, value, create_date_time, update_date_time)
)
Run Code Online (Sandbox Code Playgroud)

它包含大约400000行.

查询两个ID中的一个很快:

SELECT * FROM foo_db.foo_value WHERE foo_id_a = 123456;
takes 0.071 s

SELECT * FROM foo_db.foo_value WHERE foo_id_b = 123456;
takes 0.086 s
Run Code Online (Sandbox Code Playgroud)

但是查询OR另一个是非常慢的:

SELECT …
Run Code Online (Sandbox Code Playgroud)

sql performance composite-primary-key database-indexes cockroachdb

2
推荐指数
1
解决办法
112
查看次数

如何提高 CockroachDB 的 INSERT 性能(每秒行数)(与 PostgreSQL 相比大约慢 20 倍)

附在本文末尾的 Python3 脚本创建了一个包含 5INT列的简单表,其中 3列带有索引。

然后它使用多行插入来填充表。

一开始,它设法每秒插入大约 10000 行。

Took   0.983 s to INSERT 10000 rows, i.e. performance =  10171 rows per second.
Took   0.879 s to INSERT 10000 rows, i.e. performance =  11376 rows per second.
Took   0.911 s to INSERT 10000 rows, i.e. performance =  10982 rows per second.
Took   1.180 s to INSERT 10000 rows, i.e. performance =   8477 rows per second.
Took   1.030 s to INSERT 10000 rows, i.e. performance =   9708 …
Run Code Online (Sandbox Code Playgroud)

sql bulkinsert sqlperformance database-performance cockroachdb

2
推荐指数
1
解决办法
1667
查看次数

无法获取表锁 - 另一个 Flyway 实例可能正在运行

我正在使用 Spring Boot 和 Flyway (6.5.5) 的集成来运行 CockroachDB 集群的更新。当多个服务实例同时启动时,所有实例都尝试锁定flyway_schema_history表以验证迁移。但是,出现以下异常:

2020-09-09 00:00:00.013 ERROR 1 --- [           main] o.s.boot.SpringApplication               :
Application run failed org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: 
Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: 
Unable to obtain table lock - another Flyway instance may be running
Run Code Online (Sandbox Code Playgroud)

我找不到任何配置属性来调整它。也许有人遇到过同样的问题并以某种方式解决了它?

解决方法:重新启动服务。

flyway spring-boot cockroachdb

2
推荐指数
1
解决办法
2303
查看次数

Testcontainers execInContainer 不适用于 CockroachDB

我正在使用 Testcontainers 通过 docker 启动 CockroachDB 实例。我需要通过将该属性设置sql.defaults.experimental_temporary_tables.enabled为 true 来启用对临时表的支持。

当机器运行时,我可以这样做:

docker exec -it CockroachDBHibernate ./cockroach sql --insecure -e "SET CLUSTER SETTING sql.defaults.experimental_temporary_tables.enabled = 'true';"
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用 Testcontainers 运行相同的命令时:

container.execInContainer(
                    "./cockroach sql --insecure -e \"SET CLUSTER SETTING sql.defaults.experimental_temporary_tables.enabled = 'true';\"" );
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

OCI runtime exec failed: exec failed: container_linux.go:370: starting container process caused: exec: "./cockroach sql --insecure -e \"SET CLUSTER SETTING sql.defaults.experimental_temporary_tables.enabled = 'true';\"": stat ./cockroach sql --insecure -e "SET CLUSTER SETTING sql.defaults.experimental_temporary_tables.enabled = 'true';": no such file or directory: …
Run Code Online (Sandbox Code Playgroud)

cockroachdb testcontainers

2
推荐指数
1
解决办法
1772
查看次数

如何将 DBeaver 连接到 CockroachDB Serverless?

如何将 DBeaver 与我的 CockroachDB Serverless 数据库连接?我收到如下错误:

FATAL: codeParamsRoutingFailed: missing cluster name in connection string
Run Code Online (Sandbox Code Playgroud)

dbeaver cockroachdb cockroachcloud

2
推荐指数
1
解决办法
1233
查看次数

将本地 CockroachDB 节点添加到 Kubernetes 中托管的集群

我计划部署一个小型 Kubernetes 集群(3 个 32GB 节点)。我对 K8S 没有经验,我需要想出某种有弹性的 SQL 数据库设置,CockroachDB 似乎是一个不错的选择。

我想知道是否可以相对容易地部署一个配置,其中一些 CockroachDB 实例(节点?)位于 K8S 集群内部,但同时其他一些实例位于 K8S 集群外部(2 个本地虚拟机)。所有这些 CockroachDB 都需要被视为单个 CockroachDB 集群。还值得注意的是,Kubernetes 将托管在云中(例如 Linode)。

我所说的相对容易是指:

  • 简单化部署
  • 需要很少的维护

distributed-database kubernetes cockroachdb

2
推荐指数
1
解决办法
242
查看次数

CockroachDB可以在Raspberry Pi上运行吗?

我有兴趣在一组PI上测试CockroachDB.任何人都知道,如果考虑到他们仍在阿尔法,这目前是否可行?

raspberry-pi cockroachdb

1
推荐指数
1
解决办法
374
查看次数

与MariaDB相比,CockroachDB缓慢插入?

我做了一些测试,看看我是否可以将CockroachDB用于我的一个小项目.我在同一个DC中创建了两个相同的VPS,并在其中一个上安装了CockroachDB,另一个安装了MariaDB,然后创建了两个测试数据库来存储数据.每次以5K的批量执行1M插入.我没有对VPS/db服务器进行任何更改,它们只是在安装后运行.

CockroachDB架构:

root@:26257/test> show create table customers;
+-----------+------------------------------------------------------------------+
|   Table   |                           CreateTable                            
|
+-----------+------------------------------------------------------------------+
| customers | CREATE TABLE customers (?                                        
|
|           |     id INT NOT NULL DEFAULT unique_rowid(),?                     
|
|           |     first_name STRING NULL,?                                     
|
|           |     last_name STRING NULL,?                                      
|
|           |     age INT NULL,?                                               
|
|           |     CONSTRAINT "primary" PRIMARY KEY (id ASC),?                  
|
|           |     FAMILY "primary" (id, first_name, last_name, age)? |
|           | )                                                                
|
+-----------+------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

MariaDB的:

MariaDB [test]> show create table customers \G; …
Run Code Online (Sandbox Code Playgroud)

cockroachdb

1
推荐指数
1
解决办法
891
查看次数

如何在 CockroachDB 中将 Unix 时间戳转换为日期?

我到处都在寻找这个,但找不到我需要的东西。我有一个表,其中有一列包含事务日期的 unix 时间戳。在 MySQL 中,我可以非常轻松地进行转换,但在 CockroachDB 中执行此操作时遇到问题。

我所寻找的只是能够在 MySQL 中执行如下查询:

SELECT
  DATE(FROM_UNIXTIME(transaction_timestamp)),
  COUNT(id)
FROM 
  purchases
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

timestamp unix-timestamp cockroachdb

1
推荐指数
1
解决办法
1844
查看次数

了解 CockroachDB 副本

我很难理解为什么我的单节点设置的 CockroachDB 管理控制台有 37 个副本。根据我读过的内容

CockroachDB replicates each range (3 times by default) and stores each replica on a different node.
Run Code Online (Sandbox Code Playgroud)

这直接来自文档https://www.cockroachlabs.com/docs/v20.2/architecture/overview#glossary

运行\l我看到的命令

  database_name
-----------------
  defaultdb
  postgres
  system
  test2
(4 rows)
Run Code Online (Sandbox Code Playgroud)

运行SHOW ALL ZONE CONFIGURATIONS;我得到的命令

target                      |                               raw_config_sql
---------------------------------------------------+------------------------------------------------------------------------------
  RANGE default                                    | ALTER RANGE default CONFIGURE ZONE USING
                                                   |     range_min_bytes = 134217728,
                                                   |     range_max_bytes = 536870912,
                                                   |     gc.ttlseconds = 90000,
                                                   |     num_replicas = 3,
                                                   |     constraints = '[]',
                                                   |     lease_preferences = '[]'
  DATABASE system                                  | …
Run Code Online (Sandbox Code Playgroud)

cockroachdb

1
推荐指数
1
解决办法
158
查看次数

错误:关系“表”不存在,即使数据库和表都存在

我正在使用 cockroachdb,它本质上是 postgres 的超集,我不明白为什么这样说:

select * from _a66df261120b6c23.tabDefaultValue;
Run Code Online (Sandbox Code Playgroud)

结果犯错误:

ERROR: relation "_a66df261120b6c23.tabdefaultvalue" does not exist
Run Code Online (Sandbox Code Playgroud)

show databases给我:

    database_name   | owner | primary_region | regions | survival_goal
--------------------+-------+----------------+---------+----------------
  _a66df261120b6c23 | root  | NULL           | {}      | NULL
  defaultdb         | root  | NULL           | {}      | NULL
  postgres          | root  | NULL           | {}      | NULL
  root              | root  | NULL           | {}      | NULL
  sammy             | root  | NULL           | {}      | NULL
  system            | node  | NULL           | {} …
Run Code Online (Sandbox Code Playgroud)

cockroachdb

1
推荐指数
1
解决办法
1195
查看次数

如何将 JetBrains DataGrip 连接到 CockroachDB Serverless?

我想将 JetBrains DataGrip 与 CockroachDB Serverless 结合使用。

如何创建连接?我收到如下错误:

[08004] FATAL: codeParamsRoutingFailed: missing cluster name in connection string.
Run Code Online (Sandbox Code Playgroud)

jetbrains-ide cockroachdb datagrip cockroachcloud

0
推荐指数
1
解决办法
484
查看次数