参加数据库嘉年华有感
从2017年开始我就参加数据库技术嘉年华大会。这个大会和ITPUB举办的中国数据库技术大会DTCC和中国架构师大会SACC都是我每年必定参加的。ITPUB的那个参会更早从2013年开始。如今数据库领域公认的国内知名大会就是数据库技术嘉年华(DTC)和DTCC了。可以说就像赶集一样,约定俗成的大家就来了。 DTC最早只有Oracle,后来什么都有
从开发角度看数据库到现在浮躁的心态
我在给一位原来做开发的朋友演示一个场景的时候,他非常仔细的发现了我讲的过程中一个细节。他问到说建立一个组合索引(复合索引),两个先后关系谁先谁后是不一样的吗?能意识到这一点我觉得很不错。但凡做过数据库优化的人都知道这是有差别的,而在开发视角上绝大部分不知道。这也很正常,在国内大部分公司来说,开发对此知之甚少。 在Oracle MySQL PG以及
Oracle有没有MySQL的分区DDL遇到的问题
上次写到MySQL在分区上做了加字段以后不能交换分区,看看Oracle怎么样?表和MySQL一模一样,只是这里用了自动分区。(既然有这个功能为什么不用,还用了自增和MySQL一样了)SQL> create table pa(2 id int generated as identity (start with 1 increment by 1),3 day date,4 a int,5 pri
这个真没想到MySQL DDL也有隐患
没想到分区加了字段,居然影响后续操作。模拟一下当时出问题的场景。PA表为分区表,A表为和它一样表结构的非分区表。如图1 图1模拟写入几条数据mysql> insert into pa (a,create_time) values (1,'2020-10-01');Query OK, 1 row affected (0.01 sec)mysql> insert
从ChatGPT想到的
好几天没写了,家里生病住院的多。 最近几个月都在说ChatGPT,到现在我自己都没亲身体验过实在汗颜。体验过的你们用什么途径我就不说了,不是有法律说翻出去是违法的吗?就等着百度这个吧。都说文心一言比ChatGPT差一点,有的用就用吧。 计算机在检索方面几个阶段,一个是数据库阶段,比如
说点以前不懂事的故事
今天在我的技术群内,不知道怎么有人就说起来自己以前一些失误的操作。有全表更新的,有误删除数据的等等。我也想起来自己也干过几次丢人的事情(谁当初不是个宝宝啊) 1.刚工作时候,那时候用Oracle8i 9i.也不懂数据库。数据越写越多,报表空间不足,自己查了如何增加数据文件,如何扩展表空间,当时还很得意。但是没想过磁盘空间
MySQL从库卡主了--读写分离也不能乱读
不少使用数据库的公司,数据库都建立主从。无论Oracle、MySQL还是PostgreSQL都会有这类应用。而TiDB这种分布式数据本身是一套高可用。当然我刚才提到的Oracle、MySQL还是PostgreSQL也早就有了自己的分布式。我们今天还是说主从的这种架构。一般主从可以起到硬件故障的灾备,但是现在的硬件情况,很少硬件损坏。大家用从库做读写分离或者说分析的也很多。(如果说现在谁家的硬件天天
前%的处理--PostgreSQL
上周我写了Oracle处理前%的文章,我后来研究了一下PostgreSQL的反向索引。建立表qq,表结构如下:重点是建立一个反向索引。create index q2 on qq ( reverse(b) collate "C"); 这里开始建立不顺,和几位PG大佬交流了一下。这里的写法和Oracle有所不同。多了collate "C"注意这里的B
二次反击《再论为什么你不应该招DBA》
上上周作者约战,很久没等到,我以为过去了,还是来了。那我们就回应一下,我仅代表我和和我类似感受的同仁进行回应。 首先对其:DBA的价值空间的这个段落进行驳斥。他提到的:“但是可惜的是,过去十几年来,行业趋势是反的:DBA能达到的上限在下降,而没有DBA的下限显著地提高了。”实际情况恰恰相反。我认识70后的开发,开发入职考
反向索引处理前%
今天我又被问到一个全表查询的问题。这次好在不是前后%,仅仅前%。比如需求是要手机尾号或者卡号尾号。我其实不理解为什么有这样的需求。不过比起前后%这样的还算可以。我先说一下这个是在Oracle中的,MySQL据我所知没有。PG等其他数据库我需要研究看看。这个主要是说明我怎么构思的。SQL> create table xuexiaogang
flush 缓存对inmemory有什么影响?
首先我们模拟写入1000万数据。图1这个由于我存储过程中写了一些运算,所以以每秒不到5000条的速度写入,这个性能未达到最佳。 &nbs
全表扫描和全索引扫描继续(PG-TiDB)
上周我做了Oracle和MySQL的。这两个是一样的结论,就是select count(*) from t不带where条件都是全索引。今天看看PostgreSQL和TiDB的。我们只有一套PG库,没有TiDB,这些都是凭借兴趣学习的。所以这上面如果有错的还请指出。PG14中一个表,表结果如下:有10万条数据。看执行计划出现的都是Seq Scan,并没有看到使用到索引的样
全表扫描和全索引扫描
有人向我提问:oracle 的select count(*) from table 不走索引,mysql(版本>=5.7) select count(*) from table是自动走索引的,是这样吗?因为提问题的人查过MySQL的count(*)是做过优化的。要回答这个问题,还是用实验来说明。在Oracle 19C中,我们建立一个表,并且写入100
从数据库角度谈业务连续性
现在很多公司都对业务连续性不断提出要求,当然最好是不间断,实在不行的话尽可能减少中断时间。从前很多系统都是上班了使用,下班了就关闭的。这种系统都是可以停机做备份的,从前的数据库可能都没有高可用。 而现在不一样了,不管大公司还是小公司都对这个很看重。我从业20年来,发现影响业务连续性的有这些因素(以下说的可能受个人能力有关,未必能涵盖所有): &nb
无效数字问题:Oracle-MySQL-PG大不同
有一天,一个开发找到我说。他的这个select 任意列 在查出数据的情况下 点击图1的这个按钮,数据逐步加载,然后就会出图2的报错。 &
蹭个热度--要不要DBA和云数据库
昨天两篇文章《你怎么还在招聘DBA?》和《云数据库是不是智商税?》在网上热议,前者说云数据库不需要DBA这个岗位了,后者说我们应该让数据库下云。我来凑个热度吧。我个人经历从来没用过云(公有云),所以前者说的我没有亲身体会,只能说是看到什么听到什么学什么了。 补充一点私有云(我个人觉得应该叫资源池,没有云的属性啊)。云能解决什么?能解决快
MySQL的Open_tables 与 Opened_tables的区别
新年第一篇。 我们找到一个刚刚全部刷新的数据库(或者重启的数据库),有些东西我们可以先不看文档,用实验来看看效果。打开会话A。图1 &nbs
database 空值问题
很多人喜欢把字段默认设置为空,然后用空去判断逻辑。比如select * from t where xx is null.其实这种做法有较大的问题。我们例举一下:如图1  
数据库的部分索引
书接上回上次说到key_len的长度。我们假设有一个表50个字段,有很多数据,大约有100G吧。我们理想化一点,每个字段一样大小。那么在其中一列上建立索引,那么执行select column from table 这样的情况如图1 &nb
key_len怎么算?
昨天讲课时候发现我截图的key_len和我算的不一样。按理说这种讲了很多次了,实验也做了很多次,没可能错。后来课后检查,发现是字符集略有差别。今天借这个说一下,截图的字符集和我昨天实操的有点差别。一个是utf-8,还有一个是utf-8mb4。我们先看实验吧。看图1.