- 博客(16)
- 资源 (8)
- 收藏
- 关注
原创 使用/proc获取进程信息
pgrep ‘pname’|xargs -I{} cat /proc/{}/cmdline获取进程启动命令。linux的/proc是系统内存映射的虚拟目录,可以通过直接访问这个目录获取系统信息,如进程相关信息。比如cpuinfo为CPU的信息,meminfo为内存的信息,今天主要看一下进程的信息。/proc/{pid}下有个多个目录保存了进程的信息。所以我们可以用以下命令去获取进程的一些信息。cmdline代表了进程启动的命令。exe为该进程的可执行文件。fd为该进程打开的所有文件。
2024-06-30 21:23:52 130 1
原创 OpenGauss执行计划代价估算
OpenGauss支持通过代价估算进行执行计划的调优,代价分为IO 代价和CPU代价,这两个代价都和处理的元组数量正相关;
2023-10-31 20:20:14 104 1
原创 OpenGauss统计信息存储
stadistinct标识全局统计信息中数据库节点上字段里唯一的非NULL数据值的数目。•一个大于零的数值是独立数值的实际数目。一个小于零的数值是表中行数的分数的负数(比如,一个字段的数值平均出现概率为两次,则可以表示为stadistinct=-0.5)。在不同的数据分布下,相同的执行路径执行效率可能显著不足。Stawidth代表非NULL记录的平均存储宽度,以字节计。stanullfrac代表该字段中为NULL的记录的比率。stavalues1,一般情况下,代表高频词的值。Opengauss的统计信息。
2023-10-24 20:34:11 91
原创 OpenGauss的主备机制
Opengauss通过日志复制的方式进行数据库数据和状态的一次性同步,主要通过 wal sender和wal receiver 完成日志的发送和接收,主机上可能存在多个wal sender线程用于发送给多个备机,一个备机同一时刻只会有一个wal receiver线程从唯一一个主机拷贝日志。opengauss通过quorum一致性复制协议,只有当食物日志同步到多数备机之后主机事务才可以提交,其中用作事务提交参考的是同步备,可以通过synchronus_standby_names参数实现。
2023-09-21 23:26:45 375
原创 OpenGauss存储引擎(4)Astore的btree索引
OpenGauss的B-Tree页面和Astore的堆表页面基本相同结构,页面间按照树形结构组织。分为根、内部节点、叶子节点。其中根和内部节点都不直接指向堆表元组,叶子节点指向索引键值对应的堆表元组(存储了该元组的堆表页面号和页内偏移)。索引和元组可见性当前版本的索引不存储t_xmin和xmax这样的事务信息,因此元组的可见性判断不在遍历索引时确认,而是等到或者叶子索引指向的表元组以后再确认。这也是轻量级清理不能清理堆表元组的一个重要原因,否则会六肖悬空的堆表元组。
2023-09-12 23:44:03 129
原创 OpenGauss存储引擎(3)Astore的三种元组清理方式
清理接口cluster_rel,内部逐层调用 rebuild_relation、copy_heap_data、tableam_relation_copy_for_cluster、heapam_relation_copy_for_cluster、copy_heap_data_internal、reform_and_rewrite_tuple、rewrite_heap_tuple。清理内容:一般只清理元组内容,不清理元组指针(除了HOT)清理内容:先清理索引中的元组在清理堆表中的元组。
2023-09-10 23:03:04 150 1
原创 OpenGauss存储引擎(2)Astore的MVCC机制
OpenGauss的Astore支持多版本元组机制,同一条记录会保留多个历史版本的物理元组来解决对于同一条贾璐的读、写并发冲突。如上图,每个元组有xmin、xmax、ctid等隐藏属性,其中ctid表示元组的存储位置,(0,1)分别表示页面和页面中的偏移;在首次插入时,xmin为本次事务10的事务号,同时由于未发生更改,所以xmax=0,ctid记录当前的物理位置(0,1);在第一次修改时,新增一个元组2,同时元组1 的xmax被修改为修改修改的事务号11,同时元组1的ctid指向新的元组。
2023-09-09 23:58:16 90 1
原创 OpenGauss存储引擎(1)Astore堆表页和填充因子
OpenGauss的astore存储引擎使用对标进行元组存储,所谓堆表,就是元组按照“先来后到”的方式存储在页面中的空闲位置。与之相对,在索引表里,元组根据索引键值排序,在页面内部有序存储,而且页面之间意识逻辑有序的。Opengauss的堆表示意其中pd_multi_base以及之前的部分对应定长成员,pd_multi_base之后的部分对应元组指针变长数组。真正的元组从后先前存储,儿元组的指针从页面头部先后插入,中间是空的。每个元组通过ctid标注位置;可以看到1-7条数据在第一个page页。
2023-09-09 16:26:01 183 1
原创 OpenGauss的系统表说明(一)
*pg_database:**存储关于所有数据库的信息,包括数据库名称、数据库拥有者、编码方式、字符类型、允许的最大连接数等。**pg_shdepend:**系统表记录数据库对象和共享对象(比如角色)之间的依赖性关系。**pg_tablespace:**存储关于表空间信息,包括名称、所有者、访问权限、可使用最大空间等信息。**pg_db_role_setting:**存储数据库运行时每个角色与数据绑定的配置项的默认值。**pg_auth_members:**系统表存储显示角色之间的成员关系。
2023-09-07 23:41:03 435
原创 postgresql.conf的几个重要配置
表示postgresql使用的IP地址,当有多个IP时,可以设置为某个IP,也可以设置为*,表示所有IP均监听。用于设置在执行排序、关联、表扫描等操作的最大内存,当需要建一个大表索引时可以适当调大该参数。postgresql服务的监听端口,默认是5432。设置用于vacuum等维护操作时用到的内存总量。用于缓存数据页的内存区大小,被所有的用户共享。表示一个查询执行过程中可以使用的最大缓存。系统允许的最大并发连接数。
2023-09-04 23:02:11 105 1
原创 大量文件的查看与删除
确定后可以删除一定时间之外的数据 find xx_dir -type f -mtime +90 -print0|xargs -0 -n 100 rm。ls -f|wc -l //速度比较快,不递归,推荐,相比于ls -f可以不排序,所以速度比较快。find xx_dir/ |wc -l //速度尚可,可以递归。分区inode被占用100%,需要定位具体是哪一个目录占用过多。ls | wc -l //速度不行,不能递归,不推荐。
2023-08-21 19:20:09 32 1
原创 OpenGauss的三个配置文件
该文件存储一些通用配置,包括内存分配(比如shared_buffers),新建database的默认存储位置、数据库服务器的IP地址、日志的存储位置等。该文件控制了数据库的访问权限,可以设置:允许哪些用户连接到哪个数据库、允许哪些IP地址连接到数据库服务器,并规定了连接是的身份认证模式。二、主机认证(Host Based Authentication)配置文件pg_hba.conf。该文件用来配置当前操作系统用户映射为另一个用户来登录数据库;三、客户端认证的配置文件pg_ident.conf。
2023-02-12 18:49:55 1400
原创 http协议打包分析
http是使用面向连接的TCP进行数据传输,在传输层需要添加端口和序列号等;其中本端端口一般是随机,目的端口是服务指定的端口;然后网络层添加本端IP和目的端IP;数据链路层会根据IP使用ARP查找mac地址,如果arp表中有哦对应mac地址,可以直接使用,否则会会用免费ARP进行查找;...
2020-04-05 16:32:58 294
原创 安装php后无法访问界面
如果是直接显示无法访问,大概率是网络问题或者防火墙原因;如果是显示无权权限访问,可能是目录权限的问题,也有可能是selinux的问题;
2019-10-26 16:18:38 1007
原创 使用pyinstaller打包文件报错
使用pyinstaller打包文件报错File “d:\anaconda3\lib\runpy.py”, line 170, in run_module_as_main“main”, mod_spec)File “d:\anaconda3\lib\runpy.py”, line 85, in run_codeexec(code, run_globals)File "D:\Anaconda...
2019-10-20 14:57:32 2300
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人