第一范文网 - 专业文章范例文档资料分享平台

PostgreSQL+经验谈-PostgreSQL

来源:用户分享 时间:2025/5/25 10:26:09 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

点.  缺点, 文件较大. 优点, 还原时间和XLOG数量有关, 一般建议勤备份基 础数据文件. 缩短恢复耗时.  《PostgreSQL Selectivity Tablespace PITR》 42 PostgreSQL -  典型的物理备份  digoal=# select * from pg_start_backup(now()::text);  rsync -acvz --exclude=pg_xlog $PGDATA/*

backup_host::backup_pgdata/$DATE  digoal=# select * from pg_stop_backup();  或者使用pg_basebackup代替以上步骤  pg_basebackup -D $backup_dir/$DATE -f p -x stream-h $PRIMARY -p $PGPORT -U $replica  XLOG归档文件的备份可以在archive_command里面就做成同时写原程和 本地. 因此计划好基础数据文件备份就好了. 43 PostgreSQL - wal sender process pg_receivexlog pg_receivexlog, 利用流复制协议进行实时归档. 增强数据保护级别. PREPARE 1.主节点数据库上创建一个superuser或replication角色用于流复制 2.配置主节点(或级联standby节点)的pg_hba.conf允许客户端和主节点建立流复制的连接 host replication postgres ip地址 trust 3.配置主节点(或级联standby节点)wal_level(archive/hot_standby), max_wal_senders(>0) 4.确保远程归档节点和主节点(或级联standby节点)网络(数据库监听端口)可达 wal writer XLOG 写入 读取 网络传输 流复制协议 XLOGs postgres

main process 请求连接,认证 fork 目录 写入 fork 44 PostgreSQL - 平常在重大操作前勤创建还原点(用于物理还原)  pg_create_restore_point  逻辑还原  custom格式的备份文件可以使用pg_restore -j 并行还原.  如果备份文件比较大, 需要做全还原的话, 想调整还原的表的顺序怎么办?  PostgreSQL Logical Backup's TOC File  物理还原  PITR还原目标  recovery_target_name  recovery_target_time  recovery_target_xid  PostgreSQL datafile backup and recovery case 45 PostgreSQL -  OLTP优化  OLTP系统特点  高并发  小事务, 查询(多), 新增(多), 更新(多), 删除(较少)  备份  Speedup  查询  新增  更新, 删除  备份 46 speedup select Table Index TOAST Block 1 2 3 4 5 6 7 8 2^n Block 1 2 3 4 5 6 7 8 2^n Block 1 2 3 4 5 6 7 8 2^n OS Cache(文件系统 block) shared_buffer LRU DataFiles postgresql blocksize 可能存在重复cache 内存 47 TOAST  TOAST和HEAP TABLE存储不太一样,TOAST表一般包含如下字段 : tableoid --TOAST表的OID cmax xmax cmin xmin ctid chunk_id -- HEAP表通过TOAST pointer把这行中一个被TOAST的列关联到这 里 chunk_seq -- 同一个chunk_id如果大于TOAST_MAX_CHUNK_SIZE,将被切 片存储。这里存储切片后的序号。 chunk_data -- 真实的数据

chunk_id + chunk_seq = primary key 48 speedup select  SQL层面的优化  索引  选择合适的索引访问方法 (btree, gist, gin, btree-gist, sp-gist, hash),  选择合适的列, (驱动列),  选择合适的条件(partial index),  选择合适的数据类型  range类型的例子.  PostgreSQL range gist index 20x+ speedup than Mysql index combine query  IP地址匹配的应用案例, 原来使用的是两个int字段进行范围匹配. btree索引. 3600 tps. 修改成int8range类型, gist索引, 8Wtps.  合适的JOIN算法  nestloop, hashjoin, mergejoin  合适的成本  random_page_cost 49 speedup select  IOPS优化  OS Cache  数据库关闭后还可能存在  posix_fadvise  shared_buffer  数据库关闭后清空, LRU算法  利用pgfincore speedup select  持久化 POSIX_FADV_WILLNEED  抛弃

POSIX_FADV_DONTNEED  镜像, 预读 至内存( -- 保存表,索引,TOAST对应的OS PAGE CACHE状态表 的snapshot, -- 通过状态表预加载OS PAGE CACHE ) 50 extend select  利用流复制或其他复制技术扩展查询  hot standby  平台必须一致, 操作系统种类一致, 数据库版本要求一致  londiste3  跨平台, 跨数据库版本, 跨操作系统的复制  基于触发器, 延时相比hot standby高, 性能影响相比hot standby高  其他复制软件  slony-I

 pgpool-II  ...  应用层缓存  memcache  redis 51 speedup complex select  将运算迁往APP层, 简化数据库SQL  子查询过多或JOIN表数量过多的情况下可以考虑让优化器按照SQL书写顺序进 行关联, 杜绝优化器选择不优执行计划的情况.(from_collapse_limit=1 |

join_collapse_limit=1)  数据冗余, 减少JOIN  适当的数据冗余减少跨表查询  宽表  把窄表返回大量条记录改为宽表返回少量记录可以降低查询的IO请求, 对 内存小且存储IO能力不强的场景比较有效. 但是注意, 宽表可能带来一个问 题(热点更新)  事务级work_mem调整, 优化GROUP BY, 排序.  如 set local work_mem to '512MB';  应用层缓存, 将实时查询转非实时性查询  分区表查询优化, 1. constraint_exclusion, 2. 封装SQL时直接使用子表, 3. 分区字 段上使用约束和索引, 4. SQL在分区字段带过滤条件时, 使用常数. 52 speedup insert  batch insert  insert into table (columns) values (),(),...,();  (20W+ tuples inserted per second)  copy  (40W+ tuples inserted per second)  begin; sqls; end;  (10W+ tuples inserted per second)  分组提交, 减少IO请求次数.  commit_delay  commit_siblings  异步提交  wal_writer_delay  synchronous_commit  选择合适的wal_sync_method (pg_test_fsync)  选择合适的

搜索更多关于: PostgreSQL+经验谈-PostgreSQL 的文档
PostgreSQL+经验谈-PostgreSQL.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9dzsi9f4zu7b8vd53zji_5.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top