主键可以重复?
我的公众号原文:https://mp.weixin.qq.com/s/OwRmjtx4BGN2WHRMZDW1iQ 经常遇到求救。这次是说要给一个表加主键,但是加不上。我看到了是因为有重复数据。我问着急吗?着急有着急的办法。不着急有不着急的办法。 多年前做公安系统时候,我们一个表都是几十亿数据起步的,没有十亿的数据都
一个很老但是很有用的功能(Oracle MySQL PG 对比)之一
我的原创连接:一个很老但是很有用的功能(Oracle MySQL PG 对比)之一 (qq.com)前几天,有人问我要执行一个DDL的变更。问会锁表多久?我说让我看看SQL。alter table 表 add 需要加的字段 VARCHAR2(32) default 'N/A';update 表 se
讲讲AWR
我的原创连接:讲讲AWR (qq.com) 我这几天一直在处理一些Oracle的分析,积累了一些要说的,前几天说了要些,一直在处理问题。这几天白鳝老师也在写,说明现阶段来说AWR对我们来是一个最好的辅助工具。前段时间在一个PG的群中一位朋友说了一句话:“说一个oracle极难被超越的地方,就是故障处理owi的思想。虽然国产很多也在借鉴,但是没有做得很好的。即使现在,一个好
PDB资源隔离实践
我的原创连接:https://mp.weixin.qq.com/s/CzJzValU5Uzb5rFl-hcrVA 最近有些场景遇到资源隔离的场景。之前自己摸索过,现在实践了。这里先要申明一下,正常来说有开发规范,并且可以落实,基本用不到隔离。以目前数据库的技术和硬件来说都行。但是遇到不可掌控的实现逻辑,想怎么写怎么写的话,还是有必要的。当然这里如果有好的硬件比如像一体机那
MySQL8取消缓存
我的原创连接:MySQL8取消缓存 (qq.com) 很多人在MySQL升级到8以后甩锅说没有缓存了。我其实觉得这不对。为什么官方取消了(连给设置参数的机会也没有,不是默认关闭,而是就没有了) 还好我有个5.7,说明一下。A表ID有索引 执行一下。扫描索引4行,返回4行。  
dblink的关联与本地关联差异
我的原创连接:https://mp.weixin.qq.com/s/eHR4smuaxCYOYdMr4ADwKQ 首先申明,我反对不同主机之间的DBLink直接关联。因为中间有网络层,这样关联效果较差。遇到这种场景和需求我通常会有如下几个方案:1、迁移到一起。2、物化视图。(需要通过DBLink)但是在本地落地。3、OGG同步过来。 如果在同一主机上呢?这个比
一次Oracle优化所想到的
我的原创连接:一次Oracle优化所想到的 (qq.com)有一次遇到一个问题。当然这图已经被我涂抹的没法看了(还是涂抹掉没有风险)。但是依然能得出一些信息。(补充,该SQL根据报上来的情况是执行一次8秒以上)1、10个表进行关联(一个个数下来)2、where就一个id(看数量级是一个,应该属于点查)3、省略了大量的列(列越多回表越大)4、cost很大。(点查不应该这么多)5、用到了dblink(
数据库对比系列之三(PG事务与MySQL事务)
今天网上有个帖子,说MYSQL部分事务成功,部分事务失败。原图如下我第一感觉觉得不应该。我当时也觉得这个好像按照DBA的角度来说不应该一个成功一个失败。于是我做了一个模拟。下面有两个表一个是W表有主键,为了模拟冲突。另外一个B表无约束,随便操作。开启事务,w有5条,b有2条。这个时候给b新增一条3,并且给w增加一条5(一定是冲突的)。数据库版本是MySQL8.0.26。 查看一下结果,真
TiDB与MySQL优化器对照
今天这个我在公众号不是首发。首发链接是:https://tidb.io/blog/00e83347 今天这个文章牵涉到我多年前遇到的一个故障,当时数据库CPU100%,从而引发我对这个场景的介入。分析问题以后发现是SQL写法的不同导致优化器执行的天差地别。而每种数据库的优化器又都不一样。今天我们要做的是MySQL和TiDB的优化器差异对比。首先申
个别场景没必要排序
我原创连接https://mp.weixin.qq.com/s/3Zx8EBTGwp4sn96AHKJWiQ 经常遇到索引比列还要多的表。为什么?因为开发结合业务需求一个场景一个索引。比如说一个表有id,name,status,time几个字段吧。然后看看这表的索引可能会出现如下的索引:1、name2、time3、name+time4、time+name5、status6、name+status7
MySQL升级会变慢?
不存在的。怎么可能?有人这样质疑过,而且我在实际环境中也被人质疑过。其实我们想想任何一个产品如果升级导致性能变差这都不会被认可。我相信任何软件尤其是数据库这种核心软件发布之前都是经过大量的测试,不会出现这种问题的。过去我经历了一次质疑,十几个MySQL从5.7升级到8,我们主要目的是解决大表加字段停机的问题。因为MySQL8是加字段到数据字典中去,解决了这个问题。很多开发团队在升级过程中获得了收益
数据库对比系列之二(MySQL和达梦)
今天本文是年前的一次群中讨论,有朋友的系统从MySQL切换到达梦。国内中达梦是真的自己一点点做的做了几十年的。他很像Oracle所以被称为Oracle派,而Tidb被称为MySQL派。这个派系是看他们更像谁。 开始今天的故事。下面这个SQL在MySQL中很快,在达梦中卡的走不动。
数据库对比系列之一
https://mp.weixin.qq.com/s/U-sYXtokqI7nzYypj1iDpA 公众号原文 有人想让我多维度比较一下数据库做成一个系列。我很想,但是一直没完成。马上要过年了,我不想拖到明年。于是今天先开个头。 今天这个是优化器的差别。 我们先看看在某个场景下的三种数据库优化器如何表现?先看
应用代码也决定系统架构
https://mp.weixin.qq.com/s/wl_OmYB8fWp8vGxgn18_Lw 公众号原文经常看我公众号的朋友知道,我一直说单机数据库是最好的架构(这里单机不是说就一个机器,而是一套高可用的架构。支持节点切换,保证数据不丢失的)。分布式数据库也是的,因为它是一套。 所以我一直说数据决定架构。单套最怕的是什么?因为是一套了不用过度担心硬件了(
数据架构之我见
https://mp.weixin.qq.com/s/SXmnkpRKlhQxRp8oxueZ5A 公众号原文可能有些朋友听过系统架构但是未必听过数据架构。其实架构是围绕着数据库而展开的。我们举几个例子:1、如果一个系统就一个数据库(没有数据库的系统几乎没见过,至少有要一个吧),那么这个架构复杂不到哪里去。2、如果一个系统有多个数据库(这里指的是同构的数据库),那么这些数据库如果全部都
数据库与青霉素
https://mp.weixin.qq.com/s/zPbVEo-N07xSyEHgadlJ4Q 公众号原文 这个标题很奇怪吧?不怪,听我说说吧。 我平时听到很多类似的话,我相信你们也或多或少听过。1、Oracle处理不了大数据;2、MySQL千万级别处理不了,速度缓慢;3、PG不能高并发。其实以上都不是很正确。为什么这么说,我以我个人浅薄的经验来证
Redis的跨版本升级
我们MySQL升级为了减少停机做的方式是采用搭建主从,从为高版本。这样进行切换从而达到升级的目的。 那么Redis遇到升级能否借鉴这个模式呢?可以的。IP写一下服务器的地址这个改为YES如果这个日志参数没有就配置一个。主要是可以查问题。我这次就是靠这个查到了问题。保留频率符合任意一个,我们有10秒1次这个尽可能保证持久化。这里是配置密码的地方作
数据类型与函数索引-PostgreSQL篇
前两次是Oracle和MySQL的。今天来一个PostgreSQL的。x=# \d List of relations Schema | Name | Type | Owner --------+------+-------+---------- p
数据类型与函数索引-Oracle篇
上篇是MySQL的这篇是Oracle的。总体来说差不多,不一样的地方我会标出来。先创建一个表,写入10条数据。(MySQL5条就行,Oracle10条其实都不行。原因是Oracle处理觉得10条数据有没有索引一样。所以我最后是写入了1万条数据)分别建立索引同时把T表也建立好。完全和MySQL场景一样。然后为了更好的体现,对两个表都收集一下统计信息。接下来看结果。a列是数值型的用到索引。a列是数值型
数据类型与函数索引-MySQL篇
mysql> create table w (id int,a int,b varchar(10),c decimal(10,0),primary key (id));Query OK, 0 rows affected (0.03 sec)mysql> alter table w add d datetime;Query OK, 0 rows affected (0.02 sec)Re