Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我的插入查询正在阻止我的选择查询。postgres服务器的CPU使用率高达100%_Mysql_Postgresql - Fatal编程技术网

Mysql 我的插入查询正在阻止我的选择查询。postgres服务器的CPU使用率高达100%

Mysql 我的插入查询正在阻止我的选择查询。postgres服务器的CPU使用率高达100%,mysql,postgresql,Mysql,Postgresql,我正在对表使用select和insert查询。但是postgres的CPU使用率高达100%。如何优化它 表结构和查询如下 CREATE TABLE ad_request ( request_id bigserial NOT NULL, client_id integer DEFAULT 0, ad_type integer DEFAULT 0, ad_unit integer DEFAULT 0, host_url character varying(1

我正在对表使用select和insert查询。但是postgres的CPU使用率高达100%。如何优化它

表结构和查询如下

CREATE TABLE ad_request
(
    request_id bigserial NOT NULL,
    client_id integer DEFAULT 0,
    ad_type integer DEFAULT 0,
    ad_unit integer DEFAULT 0,
    host_url character varying(150) DEFAULT NULL::character varying,
    ip_address character varying(20) DEFAULT NULL::character varying,
    referer character varying(350) DEFAULT NULL::character varying,
    platform character varying(20) DEFAULT NULL::character varying,
    browser character varying(20) DEFAULT NULL::character varying,
    served_campaign_id bigint DEFAULT 0,
    status character(1) NOT NULL DEFAULT 'N'::bpchar,
    created_time timestamp without time zone NOT NULL DEFAULT now(),
    CONSTRAINT ad_request_pkey PRIMARY KEY (request_id)
)
WITH (
    OIDS=FALSE
);
ALTER TABLE ad_request
    OWNER TO postgres;


SELECT served_campaign_id
FROM ad_request
WHERE client_id=1 AND ad_type=1 AND ad_unit=1 AND ip_address='192.168.1.1' AND created_time > current_timestamp - interval '24 HOUR';

INSERT INTO
ad_request(client_id,ad_type,ad_unit,host_url,ip_address,referer,platform,browser,served_campaign_id)
VALUES(?,?,?,?,?,?,?,?,?);
seelct查询的解释分析输出为

 Seq Scan on ad_request  (cost=0.00..52629.15 rows=1 width=8) (actual time=245.512..245.512 rows=0 loops=1)
 Filter: ((client_id = 1) AND (ad_type = 1) AND (ad_unit = 1) AND     ((ip_address)::text = '192.168.1.1'::text) AND (created_time > (now() -   '24:00:00'::interval)))
 Total runtime: 245.544 ms
 (3 rows)
插入查询的输出为

 Result  (cost=0.00..0.02 rows=1 width=0) (actual time=0.092..0.094 rows=1 loops=1)
 Total runtime: 0.198 ms
 (2 rows)
以及从pg_stat_activity pga内部联接中选择*的输出pg_将pl锁定在pga上。procpid=pl.pid;是

datid | datname | procpid | usesysid | usename  |                                     current_query                                   | waiting |          xact_start
   |          query_start          |         backend_start         |   client_addr | client_port |  locktype  | database | relation | page | tuple |   virtualxid | tran
  sactionid | classid | objid | objsubid | virtualtransaction | pid  |       mode       | granted
   -------+---------+---------+----------+----------+----------------------- ------------------------------------------------------------+---------+---------  ---------------
   -------+-------------------------------+-------------------------------+-------------+-------------+------------+----------+----------+------+-------+------------+-----
  ----------+---------+-------+----------+--------------------+------+-----------------+---------
   20916 | adtag   |    1307 |       10 | postgres | SELECT * FROM  pg_stat_activity pga inner join pg_locks pl on pga.procpid=pl.pid ; | f       |  2015-04-01 06:00:27.700
    012+00 | 2015-04-01 06:00:27.700012+00 | 2015-04-01 04:04:49.810039+00 |             |          -1 | relation   |    20916 |    10969 |      |       |            |
      |         |       |          | 1/1272802          | 1307 | AccessShareLock | t
    20916 | adtag   |    1307 |       10 | postgres | SELECT * FROM pg_stat_activity pga inner join pg_locks pl on pga.procpid=pl.pid ; | f       |   2015-04-01 06:00:27.700
   012+00 | 2015-04-01 06:00:27.700012+00 | 2015-04-01 04:04:49.810039+00 |             |          -1 | relation   |        0 |     1262 |      |       |            |
      |         |       |          | 1/1272802          | 1307 |   AccessShareLock | t
    20916 | adtag   |    1307 |       10 | postgres | SELECT * FROM  pg_stat_activity pga inner join pg_locks pl on pga.procpid=pl.pid ; | f       |    2015-04-01 06:00:27.700
   012+00 | 2015-04-01 06:00:27.700012+00 | 2015-04-01 04:04:49.810039+00 |             |          -1 | relation   |        0 |     1260 |      |       |            |
      |         |       |          | 1/1272802          | 1307 | AccessShareLock | t
   20916 | adtag   |    1307 |       10 | postgres | SELECT * FROM pg_stat_activity pga inner join pg_locks pl on pga.procpid=pl.pid ; | f       |    2015-04-01 06:00:27.700
   012+00 | 2015-04-01 06:00:27.700012+00 | 2015-04-01 04:04:49.810039+00 |             |          -1 | relation   |        0 |     2671 |      |       |            |
      |         |       |          | 1/1272802          | 1307 | AccessShareLock | t
    20916 | adtag   |    1307 |       10 | postgres | SELECT * FROM pg_stat_activity pga inner join pg_locks pl on pga.procpid=pl.pid ; | f       |  2015-04-01 06:00:27.700
    012+00 | 2015-04-01 06:00:27.700012+00 | 2015-04-01 04:04:49.810039+00 |             |          -1 | relation   |        0 |     2676 |      |       |            |
      |         |       |          | 1/1272802          | 1307 | AccessShareLock | t
  20916 | adtag   |    1307 |       10 | postgres | SELECT * FROM pg_stat_activity pga inner join pg_locks pl on pga.procpid=pl.pid ; | f       |  2015-04-01 06:00:27.700
  012+00 | 2015-04-01 06:00:27.700012+00 | 2015-04-01 04:04:49.810039+00 |             |          -1 | virtualxid |          |          |      |       | 1/1272802  |
      |         |       |          | 1/1272802          | 1307 |  ExclusiveLock   | t
   20916 | adtag   |    1307 |       10 | postgres | SELECT * FROM  pg_stat_activity pga inner join pg_locks pl on pga.procpid=pl.pid ; | f       |    2015-04-01 06:00:27.700
  012+00 | 2015-04-01 06:00:27.700012+00 | 2015-04-01 04:04:49.810039+00 |              |          -1 | relation   |    20916 |    11042 |      |       |            |
      |         |       |          | 1/1272802          | 1307 |  AccessShareLock | t
   20916 | adtag   |    1307 |       10 | postgres | SELECT * FROM  pg_stat_activity pga inner join pg_locks pl on pga.procpid=pl.pid ; | f       |  2015-04-01 06:00:27.700
 012+00 | 2015-04-01 06:00:27.700012+00 | 2015-04-01 04:04:49.810039+00 |              |          -1 | relation   |        0 |     2672 |      |       |            |
      |         |       |          | 1/1272802          | 1307 |  AccessShareLock | t
   20916 | adtag   |    1307 |       10 | postgres | SELECT * FROM  pg_stat_activity pga inner join pg_locks pl on pga.procpid=pl.pid ; | f       |  2015-04-01 06:00:27.700
   012+00 | 2015-04-01 06:00:27.700012+00 | 2015-04-01 04:04:49.810039+00 |              |          -1 | relation   |        0 |     2677 |      |       |            |
      |         |       |          | 1/1272802          | 1307 |  AccessShareLock | t
  (9 rows)

当文档说明insert不阻止select时,这意味着select不需要insert使用的任何锁,因此insert可以在同时进行select时进行。由于创建的系统负载,许多插入操作仍然可能会减慢选择的速度,直到它们似乎无法运行。在这种情况下,需要更多的细节。描述你看到的行为。显示解释分析选择的输出。。。并解释分析插入。。。谢谢你的提问。如果他们没有完成,使用简单的解释而不是解释分析。将结果粘贴到这里。请将\copy SELECT*FROM pg_stat_activity internal join pg_locks的输出粘贴到psql中运行时格式为csv的标准输出,同时阻止查询。当您编辑问题以添加此信息时,请在此处进行注释,并记住使用{}按钮对其进行代码缩进!我已经添加了EXPLAIN-ANALYZE-INSERT和EXPLAIN-ANALYZE-SELECTWell的输出,那么它是如何阻塞的呢?这两个查询似乎都正常完成,pg_stat_活动中没有任何其他建议。SELECT必须使用顺序扫描,因为您根本没有任何索引。您的查询至少可以使用客户机id上的索引,但其他列或列的组合也可能有用。但这完全取决于你的数据,你必须自己测试。