我对 Python 很陌生,我们有一个应用程序容器和一个数据库容器。应用程序容器从 CLI 收集 DB_HOST、PORT 等值,并尝试在同一 Docker 主机上运行的容器化 Postgres DB 上创建表空间。
在执行查询时,我们收到以下错误。
psycopg2.errors.ActiveSqlTransaction: CREATE TABLESPACE cannot run inside a transaction block
Run Code Online (Sandbox Code Playgroud)
使用的Python库:
psycopg2psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT应用程序文档示例
FROM python:3.7-alpine
RUN apk update && \
apk add --no-cache openssh sshpass && \
apk add --no-cache --virtual .build-deps gcc musl-dev && \
apk add linux-headers && \
apk add python3-dev && \
apk add postgresql-dev && \
apk add postgresql-client && \
apk add bash && \
apk add libffi-dev make …Run Code Online (Sandbox Code Playgroud) 我是 Postgres 的新手,我正在尝试更多地了解索引。我使用的是 12.5 版本,这是我的代码:
CREATE TABLE textfun(content TEXT);
CREATE UNIQUE INDEX text_b ON textfun(content);
INSERT INTO textfun (content)
SELECT (CASE WHEN (random()<=0.3) THEN 'https://mywebsite/nanana/'
WHEN (random()<=0.6) THEN 'https://mywebsite/friendy/'
ELSE 'https://mywebsite/mina/' END) || generate_series(1000000,2000000);
Run Code Online (Sandbox Code Playgroud)
在这里,我创建了一百万条记录,希望看到索引的效果。
当我尝试获取查询计划时:
explain analyze
SELECT content FROM textfun WHERE content LIKE 'mina%';
Run Code Online (Sandbox Code Playgroud)
我得到这个回来:
CREATE TABLE textfun(content TEXT);
CREATE UNIQUE INDEX text_b ON textfun(content);
INSERT INTO textfun (content)
SELECT (CASE WHEN (random()<=0.3) THEN 'https://mywebsite/nanana/'
WHEN (random()<=0.6) THEN 'https://mywebsite/friendy/'
ELSE 'https://mywebsite/mina/' END) || generate_series(1000000,2000000);
Run Code Online (Sandbox Code Playgroud)
我期望并行索引扫描。
我试过:
explain analyze …Run Code Online (Sandbox Code Playgroud) $ /usr/pgsql-12/bin/pg_upgrade \
> -b /usr/pgsql-1
pgsql-10/ pgsql-12/
> -b /usr/pgsql-10/bin/ \
> -B /usr/pgsql-12/bin/ \
> -d /var/lib/pgsql/1
10/ 12/
> -d /var/lib/pgsql/10/data/ \
> -D /var/lib/pgsql/12/data/ \
> --check
Performing Consistency Checks
-----------------------------
Checking cluster versions ok
Checking database user is the install user ok
Checking database connection settings ok
Checking for prepared transactions ok
Checking for system-defined composite types in user tables ok
Checking for reg* data types in user tables ok
Checking for contrib/isn with bigint-passing …Run Code Online (Sandbox Code Playgroud)