PG的非分区表在线转分区表
前几次说了Oracle、MySQL和TiDB的,今天看看PG的。我一开始用Oracle的办法做,发现做不下去。查资料也没看到,这里就求助了。找到PG四小龙,平安科技熊总。熊总给了我他公众号的一个文章。https://mp.weixin.qq.com/s?__biz=MzUyOTAyMzMyNg==&mid=2247486137&idx=1&sn=1000a8c6
MySQL在线转分区表(以及TiDB)
上周我们做了Oracle的在线将非分区表转换成分区表。这做几个其他数据库的。创建一个表,模拟 上周讲了Oracle的在线非分区变成分区,今天讲讲其他的。首先是MySQL的,创建一个简单的表,模拟写入一点数据。实验步骤如下:mysql> CREATE TABLE t1 (id int NOT NULL AUTO_INC
非分区表转换成分区表以及注意事项
有时候刚开始设计的时候没考虑到数据归档。数据归档不是简单的导出delete。因为一般我们的数据库都是delete不释放空间。而我们一般数据库遇到空间不足,就不得不面对这个问题。当然也可以做碎片整理的空间回收。我不太喜欢这样,尤其大的表的时候。MySQL一旦超过100G的,在线环境我都不敢去做。Oracle的在线回收我做过20T的表,碎片800G,回收了一次做了55个小时(不停机)我个人觉得最好的方
提升十万倍性能,毫秒出报表
最近遇到一个问题看到AWR显示的TOP事件是这样的 resmgr:cpu quantum 这就比较头疼了,CPU处理不过来。拿了一下出问题前半个小时的AWR。看到比较严重的是这样的。 SQL处理一下大概长这个样子:SELECT * FROM (select 若干的sum(SELECT 一个配置&
为什么我总和性能指标相差很远?
我经常看到类似这样的标题某某DB比原生MySQL快N倍。原生的快多少倍其实我觉得不是太重要,甚至是不是比原生的MySQL PG快这也不好说。我们退一万步认为这个假设成立,实际也用不出这个效果。我今天来讲讲为什么。首先一个正常的主流的关系型数据库发挥出每秒几万次,乃至十几万次的读,和几千次写一点问题都没有。这还是在单机的情况下,所以我也一再强调如果业务没有达
你没有大数据
今天在一个群里,看到有人说:“国产数据库都这么强大了,把大数据的功能都实现了,大数据只需提供计算引擎就行。”我随后跟了一句:“我一直觉得大部分大数据场景,就是SQL没写好或者表设计问题导致的。有大数据场景的公司不多。” 随后有几个朋友觉得我说的不错。于是我就觉得写写吧。 什么是大数据定义不管是4V还是5V,第一个要解决的是量级。2000年左右一般
一次inmemory丢失引起的问题分析
Inmemory是Oracle12C开始推出的一个功能。我们一般OLTP数据库中数据是按照行的形式存储的,因为我们新增记录都是insert into,这是一行行的写入。而我们在分析的时候一般都是对一列或者几列聚合统计,count,max,min,avg等等,这些统计的时候对于OLTP数据库其实是一行行的读一次,最后得出的(max和min有索引不会这样)。所以如果一个表列越
主键选择选择自增还是序列?
首先申明一下是不同数据库的的设计不一样,有的有自增,有的有序列,怎么用?很多年前使用Oracle的时候我们做公安系统每过一辆车,甭管是机动车还是非机动车都记录,像上海这样的地方每天新增数据在1亿上下。300多万本地机动车再加一些非沪的外地机动车,不到400万。正常一辆私家车开出去,再开回来,经过10个路口或者路段很平常,那么就是说每天被记录20次。所以不到400万X20多次。大致在一亿左右。在全国
CAP和手表
说个多年前的事情,我经历过一个场景。说一个公司下属N个公司,希望在母公司网站注册的用户,可以直接登录子公司所有网站。同样子公司网站注册的可以登录其他子公司网站及其母公司网站。说白了就是任何一个注册上下左右的都要同步过去。事情是好事情,用户体验好啊。实际运行起来完全不是按照剧本来了。 今天说怎么这里注册的没同步过去,明天
高性能是设计出来的
好多时候我主动或者被动参与到一些优化的工作中来。有的时候提升较大,比如我在公安行业时候,有一次开发找到我说,他们一天出一个报表,一次15个小时,忍受不了了。问我能不能优化到一个小时。我接手以后除了索引(不能仅仅指望索引,但是一点不用也不行),总之N个改进建议以后。最终执行的结果是6秒。15小时到6秒,大约9000倍的提升。当时开发吃惊的嘴都合不上了,但是这才是一个数据库应有的效率。不少人误解报表就
数据库之泪第五章节
前几天正在群里谈及一些技术问题,接到有人求助请看看MySQL数据库。连上去看看,大量的表锁。其实一般来说我们OLTP数据库都是行锁的。如果动不动就表锁了,这活没法干了。但是锁这种在不同数据库不同场景下处理还不一样,比如MySQL在默认的RR下,没有索引或者没用到索引的DML就是表锁。这种是不懂或者不了解数据库的人会无意中犯下的错误。 曾经在一个群里看到有人问,大家MySQL
数据库之泪第四章节
上次说到的场景7和8都还是有意识要关联的。但是也有直接select * from a,b 后面什么都不带的,虽然执行时间一样慢,但是输出效果和意识不一样。这种真的应该拉出去打一顿。我真的见到过这种引起故障。相比较来说,数据库安全出问题(极少,不是没有),硬件故障(更加少,当今硬件技术起步就很高)。而这种SQL引起的不稳定因素几乎天天有,而且不止一次。从管理
数据库之泪第三章节
蚂蚁金服有过一个自嘲的段子:能干翻支付宝的,除了监管就是DBA了。我本人虽然没有专职做多DBA,但是也是靠这个起家的。数字时代,数据是很多企业的核心资产,对于互联网/软件服务类企业更是如此。而负责保管这些数据资产的人,就是DBA(数据库管理员)。如果一个系统的数据库出了问题,压力最大的就是DBA。因为网络再好,应用再可以横向扩展、不管docker
数据库之泪第二章节
书接上回。今天讲述的是一些误解。 误解1:空间不足删除数据。 假如有100万数据,占空间10G。现在删除50万数据(delete from这样),占空间几何?(假设数据每行数据大小大致相等)非数据库人员认为是5G,包括很多开发人员也这样认为。一般来说OLTP数据库来说,还是10
数据库之泪第一章节
幸福的家庭似乎都一样的美好无可挑剔,不幸福的家庭总是有各种各样的不和谐,各种各样的灾难或痛苦。出处:俄国 列夫·托尔斯泰 《安娜·卡列尼娜》第一章第一句话。 解析:列夫·托尔斯泰的这句“幸福的家庭都是相似的,不幸的家庭各有各的不幸”和中国的俗语“家家有本难念的经”有异曲同工之妙。每一个家里都有一些旁人不为所知的难事,每个家庭都有别人所不同的烦恼
模糊查询区分大小写吗?
我爱人做测试工作,遇到问题问我说她们测试时候要求不区分大小写,比如M1和m1都显示。我第一反应需求不合理啊。数据库一般来说都是等值比较的。否则就要去做一些工作了。我就展开了一个实验场景,给她看看。实验场景是Oracle19C,效果如下:精确查询a1的时候返回a1,模糊查询的时候没有A1
三个和尚与分布式数据库
原文公众号:三个和尚与分布式数据库 (qq.com) 从前有座山,山里有座庙,庙里有三个和尚。一个和尚挑水吃,两个和尚抬水吃,三个和尚没水吃!后来,故事有了延续。 总寺庙的方丈得知山上穷的连水都吃不上之后,就派来了一名主持和一名书记,共同负责解决这一问题。(这里像不像我们现在的系统?说什么一台机器处理不了大数据,一台机器支持不了业务。我总觉得我们一
OGG微服务版(图形化)
说起OGG大家不陌生。但是OGG的部署全是命令行的,而且查问题也是要用命令行,非常不方便。熟悉这些的人很少。OGG属于CDC的一种,我见过很多CDC工具,目前看下来OGG是问题最少的。当然最好的就是一个数据库,那么连OGG都可以不用了。 在一次OGG的学习过程中偶然知道OGG21C的版本有面向微服务版的,而且是图形化的。
肉眼可以识别的差SQL
我自己公众号原文:https://mp.weixin.qq.com/s/P-hOuC6fWEauGflF0GAgTg 有时候别人问我,你能一眼看出SQL的好坏吗?我不敢说100%能确定,但是能确定的都是100%的不好。那么靠的是什么?根据经验来说符合下面的规则的,通常来说是不好的。1、没有where 条件2、Select的列超过50列3、SQL中存在标量子查询4、SQL谓词过滤中仅含有!=或<
一个非常老但是很有用的功能-闪回
自己公众号原文:https://mp.weixin.qq.com/s/Qx7_WJ4oNpibOJZ18BlzeQ 说到闪回,熟悉数据库的人都知道。数据库自带闪回的我知道有Oracle,通过一些列工具或者方法做到闪回的有MySQL、PostgreSQL等。 实验开始:为什么要建立一个表空间?因