AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-28367

arthur's questions

Martin Hope
arthur
Asked: 2021-04-30 23:54:49 +0800 CST

请求表上的 Sch-M 锁

  • 3

我可以在未提交读取模式下访问数据库,并且需要在操作环境中对表进行维护。我需要在一个表上获得一个排他锁,做一个工作,然后释放锁。

在此维护期间,即使读取查询也不应该取回未提交的数据。

这个问题和答案看起来很有希望。我愿意:

begin transaction;
SELECT TOP (1) 1 FROM a WITH (TABLOCK);

但是随后,SIX在 table 上获得了锁a。但是,这不会从选择查询中锁定表。我怎样才能获得Sch-M桌子上的锁?最多我可以通过以下方式获得Sch-S锁:

SELECT TOP (1) * FROM a WITH (TABLOCK);

这仍然不会阻止对表的选择查询。

sql-server locking
  • 1 个回答
  • 161 Views
Martin Hope
arthur
Asked: 2021-01-30 01:31:42 +0800 CST

sql server中没有索引的表大小

  • 3

使用以下查询,我可以获得表的索引大小:

SELECT
    i.name              AS IndexName,
    SUM(page_count * 8) AS IndexSizeKB
FROM sys.dm_db_index_physical_stats(db_id(), object_id('schema.table'), NULL, NULL, 'DETAILED') AS s
JOIN sys.indexes AS i
ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id
GROUP BY i.name
ORDER BY i.name

如果我执行sp_spaceused 'schema.table'没有索引的大小是否对应于data列?

有什么方法可以在 sql server 中获取没有索引的表的大小?(SELECT语句会很好,因为我想将此查询插入到更大的查询中)。

如果我执行Get size of all tables in database,表的大小与索引的大小几乎相同(表明有问题)。

sql-server size
  • 2 个回答
  • 1478 Views
Martin Hope
arthur
Asked: 2021-01-20 01:14:45 +0800 CST

MS SQL Server 中的 UDF 返回以“with”开头的查询

  • 0

这是一个完全有效的 SQL 查询,并且可以很好地工作(例如)Microsoft SQL Server 2014:

with t as (select 'a' as attr) select * from t

它返回a,当然可以简化它并删除with部分,但这不是重点,重点是找出一个说明需求/问题的最小示例。我可以将其中的一部分打包为 UDF:

CREATE PROCEDURE x(@__employee_id uniqueidentifier)
AS
RETURN (select 'a' as attr);

如何打包具有with块的查询?我的目标是实现以下目标:

CREATE PROCEDURE x (@__employee_id uniqueidentifier)
AS
RETURN (
    with t as (select 'a' as attr) select * from t
);

但是sql server不喜欢它,触发错误:

Msg 156, Level 15, State 1, Procedure x, Line 4 [Batch Start Line 0]
Incorrect syntax near the keyword 'with'.
sql-server-2014
  • 2 个回答
  • 32 Views
Martin Hope
arthur
Asked: 2018-12-27 12:34:09 +0800 CST

将 pgadmin3 添加到 Windows 开始菜单

  • 0

我已经使用包管理器在 Windows 上安装了 postgres(实际上是不同的版本)和 pgadmin3:

https://www.openscg.com/bigsql/package-manager/ https://www.openscg.com/bigsql/docs/pgcli/pgcli/

我还将 bin 目录添加到 Windows 上的路径环境中。有什么办法可以将程序快捷方式安装到 Windows 的开始菜单中吗?

windows pgadmin
  • 1 个回答
  • 124 Views
Martin Hope
arthur
Asked: 2018-05-09 08:03:28 +0800 CST

当 *slave* 失败时重新启动 hot_standby 复制

  • 0

上下文:Postgres 9.4 上的主从复制,从几周前死了:

  • 从站从主站复制了一个 WAL 文件,
  • 告诉主人文件被复制了,
  • 主人删除了wal文件,
  • 奴隶试图播放损坏的 wal 文件,
  • 发现文件已损坏,
  • 并放弃启动。

与此同时,master 积累的日志比数据库本身还多。

我如何告诉 master 复制已经结束(重新配置复制)?任何一般性意见如何处理这种情况?

postgresql postgresql-9.4
  • 2 个回答
  • 2182 Views
Martin Hope
arthur
Asked: 2018-05-08 05:16:15 +0800 CST

为什么 select 语句需要独占锁?

  • 1

在 postgres (9.5)select中请求独占锁。为什么?

play=# \x on
Expanded display is on.
play=#   SELECT * FROM pg_locks pl
  LEFT JOIN pg_stat_activity psa
    ON pl.pid = psa.pid
    where
    pl.mode = 'ExclusiveLock'
;


-[ RECORD 1 ]------+---------------------------------
locktype           | virtualxid
database           |
relation           |
page               |
tuple              |
virtualxid         | 7/16
transactionid      |
classid            |
objid              |
objsubid           |
virtualtransaction | 7/16
pid                | 17376
mode               | ExclusiveLock
granted            | t
fastpath           | t
datid              | 1700431
datname            | play
pid                | 17376
usesysid           | 10
usename            | postgres
application_name   | psql
client_addr        | 127.0.0.1
client_hostname    |
client_port        | 54308
backend_start      | 2018-05-07 15:12:30.682069+02
xact_start         | 2018-05-07 15:12:59.513311+02
query_start        | 2018-05-07 15:12:59.513311+02
state_change       | 2018-05-07 15:12:59.513313+02
wait_event_type    |
wait_event         |
state              | active
backend_xid        |
backend_xmin       | 7152428
query              | SELECT * FROM pg_locks pl       +
                   |   LEFT JOIN pg_stat_activity psa+
                   |     ON pl.pid = psa.pid         +
                   |     where                       +
                   |     pl.mode = 'ExclusiveLock'   +
                   | ;
postgresql
  • 1 个回答
  • 475 Views
Martin Hope
arthur
Asked: 2017-10-25 03:45:52 +0800 CST

在 Windows 10 上安装 SQL Server 2016 时以域格式指定帐户错误

  • 1

我正在尝试在 Windows 10 Pro 上安装 SQL Server 2016。在“服务器配置”选项卡中,我需要提供帐户名称,服务将作为运行方式。无论我提供虚拟帐户还是本地帐户,都会生成错误并且我无法继续:

指定 accountin 域格式

注释?

installation sql-server-2016
  • 1 个回答
  • 8714 Views
Martin Hope
arthur
Asked: 2015-06-25 03:44:28 +0800 CST

即使函数中止,也会在 UDF 中持久插入

  • 4

我有一个相当复杂的 UDF(在一堆表中移动并创建一堆新表),其中可能会发生多次中止。在每次操作之前,我想记录操作发生的时间和查询本身。UDF 如下所示:

log function_start

log sql1
execute sql1

log sql2
execute sql2

...

log sqlN
execute sqlN

log function_end

每条日志语句都意味着在下表中插入一条新记录:

CREATE TABLE backup_logs
(
  id serial NOT NULL,
  t timestamp with time zone default now(),
  sql text,
  CONSTRAINT backup_logs_pkey PRIMARY KEY (id)
)

如果中止,我想sql1, sql2, ... sqlN回滚,但inserto into backup_logs要坚持。问题:我怎样才能做到这一点?

postgresql insert
  • 1 个回答
  • 914 Views
Martin Hope
arthur
Asked: 2014-10-22 01:46:14 +0800 CST

Postgres 9.1 中的 ACID 违规?

  • 1

我正在使用 Postgres 数据库为大量计算机/进程实施作业调度。简而言之,每个作业都有它的 ID,所有调度都是通过三个选项卡实现的:所有作业、当前正在运行的作业和已经完成的作业。

调度的关键功能是 (1) 请求作业和 (2) 通知数据库有关已完成的作业。请求作业从作业列表中获取任何 id,它不在 running 表中,也不在 completed 表中:

insert into piper.jobs_running
select x.fid from ( 
  SELECT fid FROM piper.jobs
  except 
  select fid from piper.jobs_running
  except 
  select fid from piper.jobs_completed
 ) as x limit 1
returning(fid)

完成作业会将其从运行列表中删除并将其插入已完成列表。因为它不是特定于并发的,所以我忽略了 SQL 命令(完成一项工作需要几十分钟到几个小时。)

这对我来说是一个令人讨厌的惊喜,两个进程运行上面完全相同的查询(几乎同时请求作业)可能获得相同的作业 ID (fid)。我提出的唯一可能的解释是 Postgres 不依赖于 ACID 规范。注释?

附加信息:我将事务设置为可序列化(在postgresql.conf set default_transaction_isolation = 'serializable'中)。现在,DBMS 会在隔离未完成的情况下使事务失败。是否可以强制 Postgres 自动重启它们?

postgresql postgresql-9.1
  • 2 个回答
  • 759 Views
Martin Hope
arthur
Asked: 2014-09-18 01:14:21 +0800 CST

在 postgresql 中转义分隔符

  • 4

我正在尝试将数据导入 postgres。数据字段以逗号分隔,字符串可能包含逗号,在这种情况下,它们会被转义:

数据结构:

create table v (a varchar);

数据文件:

bus
'Gat\,\\e\'way_MQB'

导入命令(从 bash 在 Linux 下运行)

cat data.csv | psql -d database -c "copy v (a) from stdin with delimiter ',' escape '\\' CSV header"

错误:

ERROR:  extra data after last expected column

我已经与这个问题斗争了好几个小时,不明白我做错了什么?

postgresql import
  • 1 个回答
  • 15158 Views
Martin Hope
arthur
Asked: 2014-03-27 02:17:10 +0800 CST

在 postgres 服务器上恢复超级用户帐户

  • 2

我对 postgres dbms 有一个完全好奇的情况。我已经安装了数据库,由于我的安装脚本配置错误,我将超级用户角色设置为普通用户。现在我有一个完全全新的 postgres 安装,只有模板数据库和一个几乎什么都做不了的单个用户“postgres”。如何再次使 postgres 用户成为超级用户?

我尝试在 ubuntu 12.04 下重新安装服务器,aptitude reinstall postgresql-9.1但角色似乎不受影响。很可能是因为重新安装不会影响记录角色的文件。

postgresql role
  • 2 个回答
  • 5591 Views
Martin Hope
arthur
Asked: 2013-12-14 04:31:59 +0800 CST

为多个表连续编号行

  • 1

我有许多表,所有表都包含属性aid,bid,cid,并且xid类型为整数,其他属性可能不同。对于每个(给定的)表T,我想根据aid,bid,cid升序对行进行排序,并使用从 0 开始的增量值更新列xid。实现这一目标的最佳方法是什么?

我目前的解决方案包括:

  • 选择表T
  • 在表的有序元组上打开游标
  • 将自动增量值分配给xid
  • 将元组插入时态表T_temp
  • 从中删除所有记录T
  • 将所有记录插入T_temp到T

由于这些表具有不同的架构,我将一半的代码编写在PL/pgSQL其中,另一半的代码使用 bash 脚本编写。

问题 1:关于如何让它在纯 PL/pgSQL 中编程的任何评论?

问题 2:有什么意见可以更优雅地实现吗?

postgresql update
  • 1 个回答
  • 591 Views
Martin Hope
arthur
Asked: 2013-12-10 08:47:35 +0800 CST

在插入中调用带有参数的函数

  • 1

是否有可能在 SQL 中优雅地实现以下目标:

insert into my_table (the_geom) VALUES 
    geomfromwkb('\x010100000058b4b610a73a27408144b7147f194840',4326)),
    geomfromwkb('\x010100000058b4b610a73a27408144b7147f194840',4326)),
    .....

geomfromwkb这涉及使用两个参数调用外部函数?

到目前为止,我有一个不优雅的解决方案。第一个解决方案是这种类型:

insert into mytable (the_geom) select 
    geomfromwkb('\x010100000058b4b610a73a27408144b7147f194840',4326)) union
    geomfromwkb('\x010100000058b4b610a73a27408144b7147f194840',4326)) union
    .....

第二个使用prepare语句:

PREPARE my_insert AS INSERT INTO geom_example (the_geom) 
    VALUES (geomfromwkb($1,4326));
EXECUTE my_insert ('\x010100000058b4b610a73a27408144b7147f194840');
EXECUTE my_insert ('\x010100000058b4b610a73a27408144b7147f194840');
statement: DEALLOCATE my_insert;

问题一:还有比这更优雅的吗?

问题 2:当数据库看到一堆联合时,它会做什么?

问题 3:prepare 真的比一个 fat insert 快吗?

问题4:字节序列是几何类型。是否可以跳过一致性检查(以确保这确实是几何字节序列)以加快插入速度?

postgresql insert
  • 2 个回答
  • 2343 Views
Martin Hope
arthur
Asked: 2013-11-06 09:13:45 +0800 CST

从 UDF 返回的匿名记录自动转换为众所周知的表类型

  • 8

专有代码(我们无法更改)具有一堆用户定义的类型函数:

create or replace function f() returns record as $$ ... $$

我们通过以下方式调用(例如):

SELECT status, log FROM f() as (status boolean, log text);

(status boolean, log text)是 table 的行类型T。是否可以在不列出属性的情况下自动将record(或setof record返回类型)转换为行类型?T我正在寻找的是那种:

SELECT * FROM f() as T%rowtype
postgresql plpgsql
  • 1 个回答
  • 9150 Views
Martin Hope
arthur
Asked: 2013-11-06 08:04:21 +0800 CST

将记录变量中的值插入表中

  • 3

我正在开发一个带有两个参数的用户定义函数:

create or replace function gesio(
    events_table_in regclass,  
    events_table_out regclass)
returns void as $$ ... $$

events_table_in并events_table_out具有完全相同的架构。

简单解释,我遍历 的记录events_table_in,操作记录并希望以下列方式将操作的记录附加(插入)到events_table_out:

OPEN recCurs FOR execute 
format('SELECT * FROM %s order by session_id, event_time', event_table_in);

LOOP
    FETCH recCurs into rec;
    if not found then
      exit;
    end if;

    -- 1. do something with rec

    -- 2. insert the rec into events_table_out

end loop;

我怎样才能保存rec成events_table_out?

postgresql insert
  • 3 个回答
  • 26704 Views
Martin Hope
arthur
Asked: 2013-09-19 03:37:58 +0800 CST

在postgres的UDF中获取删除语句的输出

  • 2

在 Postgres 中我做的一个用户定义的函数

execute format('delete from table where session_id = %L', id);

在没有executepostgres 的情况下运行(可能)返回以下内容:

DELETE 0

有什么办法可以在用户定义的函数中得到这个输出吗?我正在寻找的是这样的:

execute format('delete from table where session_id = %L', id) into log;
postgresql dynamic-sql
  • 1 个回答
  • 680 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve