从千年虫bug的问题谈开去
最近微软又爆了一个千年虫的bug,微软FIP-FS反恶意软件扫描引擎由于Year 2022漏洞导致Exchange服务器无法发送邮件。 另外,本田、讴歌汽车也爆了Y2K22千年虫漏洞。 这是因为,在程序中,或者数据库中,字段类型定义成int32字段类型。而int32,一共32位,第一位表示符号,因此可以表示数值大最大位是31位,即2147483647: 111111111111111111...
聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长
最近微软又爆了一个千年虫的bug,微软FIP-FS反恶意软件扫描引擎由于Year 2022漏洞导致Exchange服务器无法发送邮件。 另外,本田、讴歌汽车也爆了Y2K22千年虫漏洞。 这是因为,在程序中,或者数据库中,字段类型定义成int32字段类型。而int32,一共32位,第一位表示符号,因此可以表示数值大最大位是31位,即2147483647: 111111111111111111...
在数据统计分析中,经常会遇到需要对时间进行格式转化或其他层面的内容。由于每种数据库自带的相关函数存在一定的差异,所以经常会记不得如何使用。今天做下简单的梳理。 在开始学习日期/时间函数先,先来了解下数据库中常见的日期/时间存储格式: Unix时间戳(10位,单位为秒,1970年1月1日到现在的秒数):1605191559 Unix时间戳(13位,单位为微秒):1605191559123...
MySQL数据库索引结构 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,MySQL存储引擎MyISAM、InnoDB文章中,我们讲到了两者在存储结构上的差异。下面主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。 MyISAM 每个MyISAM在磁盘上存储成三个文件:表结构、表索引、表数据空间。 .frm文件存储表定义 .MYD (MYDa...
导读 我们在制定表DDL设计规范时,通常都会要求一条:如果有两个表要做JOIN,那么关联条件列类型最好完全一样,才能保证查询效率,真的如此吗? 相信不少朋友主动或被动告知这样一个规范要求(其实我也制定过这个规范),当多表JOIN时,关联条件列类型最好是完全一样的,这样才可以确保查询效率。果真如此吗? 关于多表JOIN的几点结论及建议 为了节省大家时间,我先把几点结论写在前面,没耐心的同...
导读 datetime列设置了NOT NULL约束,但查询条件IS NULL却能返回结果,奇怪吗? 测试表DDL CREATE TABLE `t1` ( `id` int(11) DEFAULT NULL, `dt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ) ENGINE=InnoDB 插入测试数据: yejr@imysq...
踩坑了吗? 1. 问题描述 前几天,QQ群里在讨论一个关于MySQL表统计信息迟迟不更新的问题。 这个问题我复现了,下面是详细过程: # 创建一个空表 [root@yejr.run]>create table ttxx like t1; # 第一次执行 show table status,看到 Rows = 0,没问题 [root@yejr.run] [test]>sho...
MySQL对COUNT(*)一直在优化。 1. 问题描述 某日,群友反馈问题对大表COUNT(*)很慢,但却不会记录到slow log中,这是为什么呢? 我自己根据他提供的信息,复现了这个问题: # MySQL版本是8.0.20 [root@yejr.run]>s ... Server version: 8.0.20 MySQL Community Server - GPL .....
一直以来实现数据库的零数据丢失都是非常有挑战,尤其是跨可用区的场景下。很多核心系统为了实现这一点都投入了大量的智慧和金钱。Amazon RDS在文档都明确的写到,数据库在多AZ之间的数据是保持同步的(注:同步是指数据写入两边要同时写成功,即使一边不可用,已经提交的事务在另一边一定是成功的)。一直以来,我也很好奇Amazon RDS在哪个层面实现的同步复制。 这个问题原本也是没有太大疑问的,...
某电商平台,某天线上用户报bug说账户余额信息与交易流水对不上。可以认为是数据库并发更新问题,由此定位出具体原因,并给出解决方案。 问题现象 场景描述 线上账务系统,在定时结算给卖家钱时,且高并发量的情况下,出现提现x元(假设当前用户余额为x元)余额为0后,再转入该账户一笔钱(假设为y元),结果账户余额变为了x+y 元,导致用户余额错误。 ps:账户余额的变更都是在事务中update的 环...
MaxScale是一个非常赞的MySQL Proxy产品,相比MySQL Route或者ProxySQL来看,也是非常有竞争力的。但是MaxScale有些特别,虽然是开放源代码的,但并不是一个“Open Source”的项目,他使用了特有的授权协议:BSL协议。那什么是BSL协议? 这里做个简单的说明,感兴趣的可以继续阅读文章后面的链接做延伸阅读。 BSL全称是Business Sourc...
导读 有个表做了分区,每天一个分区。 该表上有个查询,经常只查询表中某一天数据,但每次都几乎要扫描整个分区的所有数据,有什么办法进行优化吗? 待优化场景 有一个大表,每天产生的数据量约100万,所以就采用表分区方案,每天一个分区。 下面是该表的DDL: CREATE TABLE `t1` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `d...
导读 今天给大家分享一个通过SQL改写而独辟蹊径的SQL优化案例 待优化场景 发现SLOW QUERY LOG中有下面这样一条记录: ... # Query_time: 59.503827 Lock_time: 0.000198 Rows_sent: 641227 Rows_examined: 13442472 Rows_affected: 0 ... select uid,...