![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
性能
文章平均质量分 82
Hehuyi_In
这个作者很懒,什么都没留下…
展开
-
PG fast模式停库 在归档过慢及有发送延迟 会被阻塞
尝试停库时遇到的两个现象:当archiver process仍有.ready文件待处理时,执行fast模式执行stop时,必须等其处理完当walsender进程仍有wal日志未发送至从库时,必须等其发送完转载 2024-02-12 21:30:12 · 1163 阅读 · 0 评论 -
常用的文件系统、存储类型小整理
最近接触到了五花八门的文件系统、存储类型,名词听得头大,趁假期整理学习一番~原创 2024-02-07 22:09:49 · 3324 阅读 · 0 评论 -
PostgreSQL日志中的SQL记录时机 —— log_statement 和 log_min_duration_statement
log_statement 和 log_min_duration_statement 的作用及注意事项、源码学习原创 2023-11-28 21:05:11 · 3697 阅读 · 1 评论 -
从物理磁盘到数据库 —— 存储IO链路访问图
存储服务器、交换机、物理机、虚拟机、数据库原创 2023-11-05 00:03:29 · 2548 阅读 · 1 评论 -
pg ash自制版 —— pg_active_session_history
由于pgsentinel插件存在严重的内存占用问题,本篇改为自行实现,但其语句仍可以参考pgsentinel插件。v1.0 根据pg 14版本设计及测试,仅支持收集主库信息。默认每10秒收集一次 active与idle in transaction 状态会话信息,保留两个月。参考 pgsentinel插件的pg_active_session_history视图及pg pg_stat_activity视图,根据不同版本,其中部分字段的值可能为空。列名数据类型字段含义。原创 2023-10-15 13:06:08 · 2944 阅读 · 0 评论 -
PostgreSQL ash —— pgsentinel插件 学习与踩坑记录
众所周知,pg是没有像oracle那样的ash视图的,因此要回溯历史问题不太方便。pgsentinel插件会将pg_stat_activity与pg_stat_statements视图内容定期快照,并存入pg_active_session_history和pg_stat_statements_history视图中。与对应版本的pg_stat_statements视图字段含义相同。也可以直接在postgresql.conf中修改。若未配置,查询会报错。原创 2023-10-05 00:41:38 · 2695 阅读 · 1 评论 -
PostgreSQL unloged表测试及记录
不写WAL日志,因此性能优于普通表从库查询unloged表会报错非crash安全:数据库crash或以immediate方式关闭,unloged表数据会被自动清空原创 2023-09-14 19:56:09 · 2439 阅读 · 1 评论 -
记一次前端页面加载方式调整导致的数据库连接数暴增
前端代码也会导致数据库问题?原创 2023-09-04 21:10:45 · 1379 阅读 · 1 评论 -
clickhouse ssb-dbgen数据构造 及 clickhouse-benchmark简单压测
s 100 lineorder表会生成6亿行数据(约67G),-s 1000则会为其生成60亿行数据(约670G),需要大量空间和时间,注意控制。clickhouse-benchmark是自带的一个简单压测工具,可以控制执行SQL的次数、并发度等。相对来说 ssb-dbgen工具 生成的表比较简单,数据量也可以自己控制,更加方便。ssb-dbgen工具指定参数可以生成如下表的数据,其中lineorder是最大的。测试表可以都用,也可以调一些,官方文档只建了4个。查询执行时间的百分比。原创 2023-08-24 21:37:59 · 2430 阅读 · 0 评论 -
postgresql_internals-14 学习笔记(六)—— 统计信息
不完全来自这本书,把查到的和之前的文章重新汇总整理了一把。原创 2023-06-24 22:55:00 · 6151 阅读 · 0 评论 -
ORA-01795 Oracle in中超过1000个值处理方法汇总
最近又又又遇到了开发同事问Oracle 中in超过1000个值遇到ORA-01795: maximum number of expressions in a list is 1000怎么处理,之前也陆陆续续查过一些方法,汇总整理一把。当然,其中的一些方法只是保证它不报错,性能可能堪忧,尽量少用。原创 2023-06-03 19:46:38 · 8213 阅读 · 0 评论 -
PostgreSQL定位函数中最耗时的SQL(2)—— plProfiler插件图形化展示耗时语句
plProfiler插件使用C和python语言共同开发,可以收集PL/pgSQL语言(不支持SQL语言)的函数和存储过程的profile信息,并生成html报表。报表以火焰图形式展示函数调用堆栈、耗时占比,还可以查看函数中每个SQL的位置、执行次数、最长执行时间、总时间,清晰明了。由于依赖于python环境,安装、排错较复杂,对python小白不友好。同时,它也并非旁路监控,必须要手动执行对应函数。原创 2023-04-05 23:57:51 · 2193 阅读 · 1 评论 -
PostgreSQL定位函数中最耗时的SQL
开发反馈pg中某函数执行时间很长,超过30分钟,想看看慢在其中哪一段SQL。但是如果直接通过pg_stat_activity查询,只能看到上层执行函数的语句,而不像oracle和SqlServer能看到当前在执行什么。咨询群友们得到了几种方法,下面测试和对比一下。执行函数查看运行情况。原创 2023-03-12 22:49:35 · 2820 阅读 · 1 评论 -
expdp/impdp时大量等待Streams AQ: Enqueue Blocked On Low Memory
用expdp导出schema数据时突然非常慢,平时大概半小时,突然变为2小时,数据库中有大量 Streams AQ: Enqueue Blocked On Low Memory 等待。查询文档发现可以加大streams_pool_size参数CONNECT / as sysdbaALTER SYSTEM SET streams_pool_size=150m SCOPE=both;虽然文...原创 2019-08-26 15:24:51 · 3424 阅读 · 3 评论 -
SQL Server扩展事件系列(一)—— 简介、概念解析与注意事项
扩展事件(Extended Events)引入于2008版本,具有高度可伸缩可配置的体系结构,使用户能够按需收集解决性能问题或确定问题所需的信息。扩展事件是轻型性能监视系统,性能消耗非常少,未来可能会替代掉profiler和trace(目前还做不到,功能相比前两者还有差距)。转载 2019-06-17 11:11:10 · 1852 阅读 · 1 评论 -
postgresql_internals-14 学习笔记(五)Buffer Cache
调和内存(ns级)与磁盘(ms级)间的速度差异。pg不仅用自己的,也用os cache,所以它使用了“双缓存”,这也是很多文档推荐shared_buffer参数只设为内存25%(通常不超过16G)的原因。原创 2023-01-01 12:23:08 · 2116 阅读 · 0 评论 -
postgresql源码学习(50)—— 小白学习Dtrace追踪源码函数调用
业务任意执行的一条语句、出现了某些怪异的现象,如何能知道它究竟调用了pg中的哪些函数?而哪些函数是不符合我们预期的?Dtrace就能解决这个问题。原创 2022-11-26 16:39:25 · 1880 阅读 · 3 评论 -
postgresql 常用的删除重复数据方法
最高效方法...转载 2020-04-27 00:27:30 · 16346 阅读 · 0 评论 -
记录一些 PostgreSQL问题分析思路
原文来自微信公众号文章本文主要学习记录一些其中的问题分析思路和方法。原创 2022-08-06 16:06:49 · 1961 阅读 · 0 评论 -
重复查询/标量子查询改写为case when
生产环境中经常会看到要取一个表不同条件值的时候,写n多子查询查同一个表。本文整理一些典型案例和改写方法。核心思想就是减少对表的多次扫描,最好减成一次。创建测试表create table t1 as select * from dba_objects;create index ind_object_id on t1(object_id);create index ind_object_name on t1(object_name);create index ind_owne...原创 2022-04-17 10:52:20 · 2053 阅读 · 0 评论 -
Oracle 关联更新 update
Oracle 关联更新 update原创 2022-04-17 10:35:33 · 17547 阅读 · 0 评论 -
Oracle OR条件的优化与改写
一、 两个字段谓词条件的orselect object_name,object_type,object_id from t1 whereobject_name='T1' or object_id<=10;优化方法:如果字段选择率高,两个字段分别加索引即可二、 高选择度的or改写 上面这种情况,如果两个字段的选择性可以,而且都存在索引,不论是oracle还是mysql,优化器都是会自动改写的,如果要手工改写,可以这样改:select object_name,obj...原创 2019-05-05 19:34:27 · 10127 阅读 · 0 评论 -
Oracle 表关联、半关联、反关联
一、 表关联先建两个测试表create table t1(id int,name varchar2(10));create table t2(id int,name varchar2(10));SQL> select * from t1; ID NAME---------- ---------- 1 A 2 b 3 p 4 L VSQL> select * fro...原创 2022-04-09 12:06:00 · 5617 阅读 · 0 评论 -
Oracle 游标逐行处理 改写为 大表直接关联
以下案例及写法来自 triger liu《专题培训-SQL写法与改写》,有部分个人测试及删改,原文请参考原课程。一、 创建测试表create table tb_mbi_temp2(ofr_id int);create table tb_bil_mbi_day(ofr_id int,ofr_code int);insert into tb_bil_mbi_day values(7902,800);insert into tb_bil_mbi_day values(7698,1600);原创 2022-04-05 15:47:11 · 2514 阅读 · 0 评论 -
分布式数据库笔记 —— 数据一致性模型
系列笔记来自极客时间课程《分布式数据库30讲》分布式数据库30讲_分布式数据库_数据库_分布式_后端_架构_分布式系统_分布式存储_后端存储_后端开发_DDB-极客时间零、分布式数据库外部特性写多读少、低延时、海量并发、海量存储、高可靠性、关系型数据库一、 一致性 对于分布式系统而言,一致性是在探讨当系统内的一份逻辑数据存在多个物理的数据副本时,对其执行读写操作会产生什么样的结果,这也符合 CAP 理论对一致性的表述。 而在数据库领域,一致性与事务密...原创 2022-03-20 12:55:28 · 3550 阅读 · 0 评论 -
clickhouse 集群搭建步骤
参考官方文档及一些网上文章整理的搭建步骤,能建起来但未实际用于过生产环境,请谨慎用于生产环境。一、 操作系统设置 编号 需求项 操作环境 需求细节内容 说明 分配主机 1 操作系统要求 ch01,ch02,ch03 linux版本:CentOS 7 如果使用VMWare,则关闭vmware的overcommit update版本选择为最新版本的上一个版本,如最新版本为CentOS 7.3,则安装选择CentOS 7.2。原创 2022-03-05 23:22:39 · 4486 阅读 · 0 评论 -
Linux 虚拟内存管理思维导图
画了冰山一角...b站有一些讲解内存管理的课程,讲得挺好的新竹交通大学:计算机操作系统设计与实现(Operating System Design and Implementation,作業系統設計與實作課程)_哔哩哔哩_bilibili原创 2022-03-05 22:40:29 · 1676 阅读 · 0 评论 -
Oracle存储过程定位慢SQL方法
最近遇到开发反馈一个执行将近2天的存储过程,需要分析慢的原因。查询和咨询了大家一些定位方法,汇总记录一下。一、 存储过程中加入计时代码原始的分析方法,适用于较简单、性能要求不太高的存储过程场景。在怀疑段设置计时点,不断缩小范围。缺点:需要改业务代码 复杂存储过程需要多次或者大量设置,可行性不高 需要再次执行存储过程 计时点设置过多可能影响存储过程本身性能二、 dbms_profiler用于分析Oracle存储过程中的各段代码的时间开销情况,从而快速找到性能...原创 2021-12-06 19:03:46 · 4983 阅读 · 0 评论 -
并行insert出现library cache lock与cursor: pin S wait on X等待问题记录
一、 故障现象与紧急处理开发反馈凌晨5点左右应用出现大量报错ORA-04021: timeout occurred while waiting to lock object,并且集中出现在insert im_message这个表的操作上,其他表不受影响。查看当时等待情况,发现确实有异常的内存等待,而且还可以看到sid=15和1347的会话在相互等待,串成了环。SQL> select sid,status,blocking_session,final_blocking_session,ev.原创 2021-10-09 21:53:38 · 2584 阅读 · 0 评论 -
生产系统不改代码解决SQL性能问题的几种方法
本文有删减,完整版链接78-生产系统不改代码解决SQL性能问题的几种方法出于各种原因,需要在不改SQL代码的情况下对数据库进行优化,下面就列举了一些情况,可以在不改程序代码的情况下,改善SQL的执行效率: 1-增加索引(没有风险)通常是普通索引与函数索引2-调整执行计划(没有风险) sql执行计划选择错误,不需要在程序代码的sql中增加hint,强大的oracle有办法在后台控制SQL的执行计划; 情况1:执行计划有好有差,直接使用sqlprofi...转载 2021-10-03 22:58:58 · 1481 阅读 · 0 评论 -
关于SQL Server alter table修改字段类型
最近业务方觉得业务表int字段精度不够,需要转为decimal。操作的数据库版本是2014,涉及30多张表,其中有9个千万级的大表,还不止改一个字段。这里总结下注意事项和遇到的问题:隐式转换问题:代码对应变量类型要改,关联表字段类型要改,否则就是在制造性能炸弹 索引问题:字段上有索引需要先删除,改完类型一定要记得建回去 性能问题:删除索引前对应业务sql必须停掉,否则高并发全表扫描瞬间能将资源耗尽 阻塞对应表读写:alter过程锁表,对该表的读写操作均会被阻塞 -- 2016支持online.原创 2021-07-24 10:42:33 · 4265 阅读 · 0 评论 -
postgresql源码学习(56)—— explain是如何快速估算pg表行数的
但是这个字段的值需要收集统计信息后才有,如果统计信息过旧,也会不准确。但是注意不要EXPLAIN SELECT count(*),相差很大。如果没有统计信息或者比较旧了,又不想收集,可以使用explain。加::numeric是为了防止数字太大,变成科学计数法。为了方便获取预估值,可以将执行计划输出转为json格式。看到在完全没有统计信息的情况下,偏差大概在10%左右。,类似oracle的num_rows。收集之后,偏差明显减少。原创 2023-06-15 19:01:20 · 2494 阅读 · 0 评论 -
SqlServer 突破CPU 20核限制
SqlServer安装时企业版会有两种选项:Microsoft SQL Server Enterprise (64-bit),Microsoft SQL Server Enterprise: Core-based Licensing (64-bit)。前者为EnterpriseServer+CAL license 模式,最大计算能力限制为20核;后者为Enterprise Per Core license 模式,最大计算能力限制为操作系统最大CPU核数。如果在创建时选错了类型,服务器实际要用到超过20核,原创 2021-04-17 00:06:56 · 5488 阅读 · 0 评论 -
Linux 内存回收,思维导图记录
最近天天跟内存斗智斗勇,整理下学习的记录。原创 2023-04-09 12:03:25 · 2595 阅读 · 1 评论 -
SQL Server索引中的include列
一、 几个概念覆盖索引 返回的数据列就包含于索引的键值中,或者包含于索引的键值+聚集索引的键值中,那么就不会发生Bookup Lookup,因为找到索引项,就已经找到所需的数据了,没有必要再到数据行去找了。 复合索引 复合索引就是包含两个或者多个字段的索引 非键列 键列就是在索引中所包含的列,当然非键列就是该索引之外的列了二、2005的新特性 在 SQL Serve...原创 2019-04-29 11:01:16 · 5452 阅读 · 0 评论 -
Oracle replay工具用法
一、 简介Oracle 11g推出的神器,可以抓取生产环境真实负载(sql语句),在目标环境重演,进行对比。在核心生产环境迁移等重大变更前,尽量确定变更带来的影响。核心步骤包括:准备工作、捕获负载、预处理负载、重演负载、对比分析,每步又包含多个子步骤,下面通过测试案例来看。二、 准备工作源与目标库版本要一致,测试中使用19.3版本 源与目标库启用AWR,并设置好采集间隔和保留时间 目标库要有源库中数据,通过dump、rman、dg等同步均可-- 本例中我们只建一个表-- .原创 2020-07-16 16:40:12 · 2714 阅读 · 1 评论 -
Oracle 11gR2 新技术 Cardinality Feedback
有很多地方可以设置定时任务,比如:Windows的计划任务,Linux下的crontab,各种开发工具里的timer组件。SQL Server也有它的定时任务组件 SQL Server Agent,基于它可以方便的部署各种数据库相关的作业(job)。一、作业历史记录作业的历史记录按时间采用FIFO原则,当累积的作业历史记录达到上限时,就会删除最老的记录。1. 作业历史记录数配置所有作业总计记录条数默认为1000,最多为999999条。单个作业总计记录条数默认为100,最多为99999..转载 2020-12-26 22:34:18 · 2210 阅读 · 0 评论 -
阿里云ecs Windows条带化方法及优缺点
一、 背景系统对磁盘速度要求较高,但测试时发现阿里云ecs ssd磁盘只有300M/s。查询文档发现阿里云单块磁盘速度有上限,高级essd能达到速度要求但价格每个月增加约1/3,测试并记录下Windows条带化方法及优缺点。阿里云ecs 磁盘性能对比如下:完整版参考:https://www.alibabacloud.com/help/zh/doc-detail/25382.htm?spm=a2c63.p38356.879954.8.43ae65b1379bSk#title-1rp-8na-2原创 2020-11-08 16:56:55 · 2000 阅读 · 0 评论 -
MySQL 执行计划分析
巻き戻し(まきもどし)倒带早送り快进原创 2020-03-24 00:38:51 · 1766 阅读 · 1 评论 -
MySQL 表字符集不同导致索引失效问题
开发连接oracle遇到这个报错,原文是连mysql的,oracle的排查思路类似项目启动报错:[2016-07-13 10:04:15,074] ERROR org.apache.ibatis.executor.BaseExecutor Could not get a databaseId from dataSource java.sql.SQLException: Conne...原创 2019-12-19 22:30:35 · 2469 阅读 · 1 评论