Bootstrap

【数据库学习】PostgreSQL优化

  1. pg安装与运维
  2. Postgres原理及底层实现
  3. 基础语法
  4. SQL优化
  5. 中文文档

1,数据库减负思路

  1. 缓存 + 页面静态化
    实时性不高的数据;
  2. 数据库优化=sql优化 + 表结构优化 + 数据库分区分表
    合并数据库操作,将多次操作合并成一条sql执行。
  3. 热点数据分离
    主表只保存活跃数据。
  4. 数据库读写分离

2,执行计划

1)场景

explain只能分析:SELECT、INSERT、DELETE、UPDATE和DECLARE…CURSOR命令。

2)使用

ANALYZE 缺省表示只计划;加上表示查看实际执行成本。

#查看执行计划。也可以使用navicat的解释功能查看。
explain [ANALYZE] sql语句;  

3)结果说明

1>算子

2>缓存-shared

  • Hit - 命中
  • Read - 读磁盘
  • Dirtied - 脏页(脏页包含在Hit中)

3>统计数据

QUERY PLAN
Index Scan using tenk1_unique1 on tenk1  (cost=0.00..10.01 rows=1 width=244)
  1. cost:启动开销…总开销。
    不过事实总开销可能会低一点:带有 LIMIT 子句的查询将会在 Limit 规划节点的输入节点里很快停止。
  2. rows:预计输出的行数
   Index Cond: (unique1 < 3)  --从索引中检索出的行的过滤器
   Filter: (stringu1 = 'xxx'::name)
  1. Filter:过滤条件
QUERY PLAN
--嵌套循环
 Nested Loop  (cost=2.37..553.11 rows=106 width=488) 
   ->  Bitmap Heap Scan on tenk1 t1  (cost=2.37..232.35 rows=106 width=244) 
         Recheck Cond: (unique1 < 100)
         --位图索引
         ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..2.37 rows=106 width=0)
               Index Cond: (unique1 < 100)
   ->  Index Scan using tenk2_unique2 on tenk2 t2  (cost=0.00..3.01 rows=1 width=244)
         Index Cond: ("outer".unique2 = t2.unique2)


QUERY PLAN
--内存 Hash 表
 Hash Join  (cost=232.61..741.67 rows=106 width=488)
   Hash Cond: ("outer".unique2 = "inner".unique2)
   ->  Seq Scan on tenk2 t2  (cost=0.00..458.00 rows=10000 width=244)
   ->  Hash  (cost=232.35..232.35 rows=106 width=244)
         ->  Bitmap Heap Scan on tenk1 t1  (cost=2.37..232.35 rows=106 width=244)
               Recheck Cond: (uni

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;