小编kgr*_*ttn的帖子

运行UPDATE时PostgreSQL中的死锁

关于PostgreSQL死锁,我有点困惑.

典型的死锁示例是:

-- Transaction 1
UPDATE customer SET ... WHERE id = 1
UPDATE customer SET ... WHERE id = 2

-- Transaction 2
UPDATE customer SET ... WHERE id = 2
UPDATE customer SET ... WHERE id = 1
Run Code Online (Sandbox Code Playgroud)

但是,如果我更改代码如下:

-- Transaction 1
UPDATE customer SET ... WHERE id IN (1, 2)

-- Transaction 2
UPDATE customer SET ... WHERE id IN (1, 2)
Run Code Online (Sandbox Code Playgroud)

这可能会陷入僵局吗?

基本上我的问题是:在第二种情况下,PostgreSQL会逐行锁定行,还是锁定WHERE条件所涵盖的整个范围?

提前致谢!

postgresql transactions database-deadlocks

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

Postgres全文索引

CREATE INDEX message_fulltext_idx ON feedback USING gin(to_tsvector(message));
Run Code Online (Sandbox Code Playgroud)
ERROR:  functions in index predicate must be marked IMMUTABLE 

怎么避免这个?

postgresql indexing

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

将文件从PostgreSQL导入R

我有一个大型数据集,我将在R软件中进行一些分析.虽然我无法将数据正确导入R.

我收到此错误:

Error in postgresqlNewConnection(drv, ...) : RS-DBI driver: (could not connect User@local on dbname "Intel"

我使用PostgreSQL打开数据并以某种方式管理它.如何将PostgreSQL中的现有数据导入R软件?

postgresql r

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

SQL:选择(null = null);

这个问题出自我正在研究的数据库考试,所以在真实情况下可能没有任何东西可以使用......

以下有效SQL语句产生什么输出?解释你的答案!

SELECT(NULL = NULL);

我可以很容易地生成语句的输出,即

school=> select (null = null);
 ?column?
----------

(1 row)

在psql 8.4.11中,但是如何以及为什么这是我不知道的答案...我猜它会尝试评估括号内的表达式并提出真/假,但显然它没有.

有关它为何如此行为的任何提示?

谢谢

sql postgresql-8.4

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

Heroku和Postgresql和Rails - 连接错误太多

我在Ruby on Rails,Heroku和Postgresql上遇到以下错误:

PG::Error (FATAL:  too many connections for role "********"

我已经多次重启服务器无济于事.有任何想法吗?

postgresql ruby-on-rails heroku

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

PostgreSQL正则表达式验证电子邮件地址

CREATE OR REPLACE FUNCTION addUploader(INTEGER, TEXT, TEXT) RETURNS TEXT AS $$

DECLARE

  u_id ALIAS FOR $1 ;
  username ALIAS FOR $2;
  email ALIAS FOR $3; 

BEGIN 

  IF email NOT LIKE '^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+$' THEN

    RAISE EXCEPTION 'Wrong E-mail format %', email
        USING HINT = 'Please check your E-mail format.';

  END IF ; 

  INSERT INTO uploader VALUES(u_id,username,email);

  IF NOT FOUND THEN
    RETURN 'Error';
  END IF;
  RETURN 'Successfully added' ; 

EXCEPTION WHEN unique_violation THEN
  RAISE NOTICE 'This ID already exists. Specify another one.' ; …
Run Code Online (Sandbox Code Playgroud)

regex postgresql

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

psycopg2超出共享内存和增加max_pred_locks_per_transaction的提示

在postgresql 9.1中插入大量数据时.使用Python脚本,我们在此查询上收到以下错误:

X: psycopg2.ProgrammingError in /home/hosting/apps/X
X_psycopg.py:162 in : Execute 'execute' (
                        SELECT * FROM xml_fifo.fifo
                        WHERE type_id IN (1,2)
                        ORDER BY type_id, timestamp LIMIT 10
                        ): out of shared memory
HINT:  You might need to increase max_pred_locks_per_transaction

我们增加了这个数字但仍然没有共享内存(max_pred_locks_per_transaction = 192).每次我们再次启动脚本时它会运行一段时间,然后给出此错误消息.在Postgres 8.1上我们没有遇到这个问题.

这是postgresql日志文件的一部分:

2012-06-28 02:55:43 CEST HINT:  Use the escape string syntax for backslashes, e.g., E'\\'.
2012-06-28 02:55:43 CEST WARNING:  nonstandard use of \\ in a string literal at character 271
2012-06-28 02:55:43 CEST HINT:  Use the escape string syntax …

python postgresql isolation-level postgresql-9.1

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

PostgreSQL时间戳 - 索引

我正在运行一个查询,我在那里寻找一条记录,另一条记录在一段时间之后.

表定义:

(
  id integer primary key,
  gpsstatus character(2),
  datetime timestamp without time zone,
  lat numeric(9,6),
  lon numeric(9,6),
  alt numeric(9,4),
  time integer,
  datafileid integer,
  shape geometry,
  speed double precision,
  dist double precision,
  shape_utm geometry,
  lokalitet character(128),
  cowid integer
)
Run Code Online (Sandbox Code Playgroud)

在datetime,lokalitet,cowid,gpsstatus,gist-index on shape和shape_utm上有索引.

应该每隔5秒对这些点进行采样,所以我试着这样做

select <something more>,p1.timestamp 
from table p1, table p2 
where p1.timestamp + interval '5 secound' = p2.timestamp
Run Code Online (Sandbox Code Playgroud)

这样运行得相当快,但后来我发现由于采样中的抖动导致我丢失了很多点,所以这些点可能相隔4到6秒.

然后我尝试了:

where    (p2.timestamp, interval'0 second')
overlaps (p1.timestamp + interval '4 second', interval '2 second')
Run Code Online (Sandbox Code Playgroud)

这花了很多年.我也尝试过更简单的解决方案:

WHERE p1.timestamp + interval '4 …
Run Code Online (Sandbox Code Playgroud)

sql postgresql timestamp range

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

单个或多个锁定对象

我一直在研究嵌套和多个锁,但我还没有找到这个特定场景的解决方法.

class x
{
Method1()
    {
    Lock (object)
        {
        Method2();
        }
    }


Method2()
    {
    Lock (object)
        {
        //do stuff
        }
    }

}//close class x
Run Code Online (Sandbox Code Playgroud)

锁定对象可以是相同的还是它们必须是不同的?

一种方法比另一种方法有优势吗?

.net multithreading locking

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

如何以良好的性能查询多个COUNT(*)

我有这张桌子:

CREATE TABLE schedule (
schedule_id serial NOT NULL,
start_date date,
CONSTRAINT schedule_id PRIMARY KEY (schedule_element_id)
)
Run Code Online (Sandbox Code Playgroud)

和这张桌子:

CREATE TABLE schedule_user (
schedule_user_id serial NOT NULL,
schedule_id integer,
state int,
CONSTRAINT fk_schedule_id   FOREIGN KEY (schedule_id)
      REFERENCES schedule (schedule_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)
Run Code Online (Sandbox Code Playgroud)
时间表 
 -------------------------
| schedule_id |日期|
| ------------ + ------------ |
| 1 |'2013-10-10'|
| 2 |'2013-10-20'|
| 3 |'2013-08-13'|
 -------------------------

schedule_user 
 -----------------------------------
| schedule_user_id | schedule_id | state |
| ---------------- …

sql postgresql relational-database postgresql-9.2

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