- 博客(14)
- 收藏
- 关注
原创 Postgresql体系架构(四)-内存结构
这个参数会被考虑在使 用一个索引的代价估计中,更高的数值会使得索引扫描更可能被使用,更低的数值会使 得顺序扫描更可能被使用。由于数据库会话一次只能执行其中的一个操作,并且 PostgreSQL不会同时运行许多操作,因此可以将maintenance work mem 的值设置为明显大于 work mem 的值。需要关注的是:每个排序操作都会消耗一个work_mem内存,并不是一个SQL消耗一个,因此,当您的系统中有大量的排序时,此值可适当调小,防止内存用尽。器,当前的数据库服务器可以提供多少的缓存空间。
2025-05-18 15:07:48
726
原创 Postgresql体系架构(三)-逻辑结构
分区表的分区本身也是表,主表不存储数据,分区表存储数据;list 分区以指定的分区值将数据存放到对应的分区上,然后把满足条件的行存放在该分区中, 最常见的是以某列值为分区条件,根据不同的列值存放在不同的分区。范围分区表一般指的一个分区的范围,然后把满足条件的行存放在该分区中,最常见的是以日 期做为分区条件,根据时间段分为不同的分区,存放不同时间段的数据。hash 分区将数据散列存储在各个分区上,以打散热点数据存放到对应的分区上,然后把满足条件的行存放在该分区中,最常见的是平均的把数据放在不同的分区。
2025-05-18 14:59:52
608
原创 Postgresql体系架构(二)-进程结构
其中,$PGHOME/bin/postgres 是数据库服务器的master 进程,其它诸如checkpoint, background writer,walwrite,autovacuum launcher,stats collector,logical replication launcher 都是由它fork的子进程。PostgreSQL采取的是在原数据块上进行保留旧的数据,并作标记,等到将来修改提交生效之后,旧的数据(dead tuple翻译为死元组)不需要的话,就得清理, 由该进程来完成。
2025-05-18 01:00:00
988
原创 Postgresql 体系架构(一)- 物理结构
如果一个表的列中可能存储相当大的项,那么该表就会有个与之相关联的TOAST表, 它用于 存储无法保留在在表行中的域值的线外存储。FSM 结构来管理数据页中的空闲空间,FSM是存在以_fsm为后缀的文件中的,每个表都 有一个对应的fsm 文件。主要的作用为,在我们对表中的行做了update, delete 后,这一行的 tuple 并不会马上被清理掉,pg会通过vacuum 操作将这些dead tuple 清理, vm文件的主要作用是显示占用tuple , 扫描的时候会跳过这些tuple。
2025-05-17 17:06:42
555
原创 postgresql 17编译安装详解与实战
-auth-local=authmethod 连接的本地用户指定在pg_hba.conf中使用的认证方法 这个选项为通过 Unix 域套接字连接的本地用户指定在pg_hba.conf中使用的认证方法 (local行)。此外,在具有大量WAL的数据库中,每个目录的WAL文件的绝对数量可以成为一个性能和管理问题。如果--locale-provider是内置的,那么必须指定--locale或--built –locale必须指定并设置为C或C.UTF-8。这也将是后来创建的任何数据库的默认编码,除非你覆盖它。
2024-11-24 23:11:52
1522
原创 Postgresql高可用-知识概要
同步多主机复制最适合大多数读工作负载,尽管它的最大优点是任何服务器都可以接受写请求,但不需要分区主服务器和备用服务器之间的工作负载,因为数据更改是从其中一个服务器发送的从服务器到另一个服务器,对于像random()这样的非确定性函数没有问题。bucardo是PostgreSQL数据库中实现双向同步的软件 可以实现PostgreSQL数据库的双master的方案 bucardo中的同步都是异步的是通过触发器记录变化,程序是perl写的 可以实现postgresql的多主复制、主从同步;每个服务器独立运行。
2024-11-18 12:54:18
1272
1
原创 一个sql优化案例
最近,公司上线一个新项目,但上线后没几天,数据库的性能问题尤为明显,其中一个较为特殊,查询缓慢,还经常导致应用端服务内存溢出而崩溃。原语句:SELECT media_id,ad_id,ad_name, advertiser_id,ad_modify_time, ad_create_time,`status`,opt_status,delivery_range,inventory_type,open_url,bid,budget,budget_mode,mm.smart_...
2022-05-31 21:03:56
492
原创 利用BETWEEN AND比较字符串获得一个首字母为 B 和 N 之间的数据问题
BETWEEN AND比较字符串一个问题CREATE TABLE customer(customer_id serial ,title char(4) ,fname varchar(32) ,lname varchar(32) NOT NULL,addressline varchar(64) ,town varchar(32) ,zipcode char(10) NOT NULL,phone varchar(16) ,CONSTRAINT customer_pk P...
2022-05-09 11:36:14
750
原创 MySQL虚拟列的详细讲解
MySQL运用虚拟列对where条件有函数的的优化MySQL5.7引入了Generated Column,所谓Cenerated Column,就是数据库中的某一列由其他列计算而得。MySQL 5.7中,支持两种Generated Column,即Virtual Generated Column和Stored Generated Column,前者只将Generated Column保存在数据字典中(表的元数据),并不会将这一列数据持久化到磁盘上;后者会将Generated Column持久化到磁盘上.
2021-01-26 10:55:24
17745
2
原创 Mysql 未确定函数优化
Mysql函数调用优化MySQL函数在内部被标记为确定性或非确定性。非确定性函数如:RAND()、UUID()等,如果给它的参数固定值,它可以对不同的结果返回不同的结果被调用。确定函数如POW(),log()等,如果给它的参数固定值,会返回同一个结果被调用。不确定性函数可能会影响查询性能。CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT, co_name VARCHAR(100), PRIMARY KEY(id));INSERT INTO t1(.
2020-11-06 20:06:58
254
原创 mysql 用户备份数据库权限
mysqldump 备份所需要的权限说明:1、对于table,mysqldump 最少要有select权限2、如果要产生一份一致的备份,mysqldump 要有lock tables权限3、对于view,mysqldump 要有show view权限4、对于trigger,mysqldump 要有trriger权限5、对于event,mysqldump 要有event权限创建用户并授权:create user dbbackup@localhost identified by '123456
2020-07-01 17:46:20
1332
原创 mysql left join中子表null值查询
与SQL标准相比, 语法 扩展了。后者只接受 table_reference ,而不是在一对括号内的列表。 如果我们将 table_reference 项目 列表中的每个逗号 视为等同于内部 联接,则这是保守扩展 。 例如:SELECT * FROM t1 LEFT JOIN(t2,t3,t4) ON(t2.a = t1.a AND t3.b = t1.b AND t4.c = t1.c)相当于: SELECT * FROM t1 LEFT ...
2020-06-30 19:06:53
1771
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人