MySQL
文章平均质量分 73
Bug开发攻城狮
自古,百无一用是深情,唯有套路得人心
展开
-
手写sql掉进去的坑
一个同事出去面试,面试官让他手写sql,也不复杂,就是学生表和班级表关联的查询。然后,他写完了,面试官说是错的,关联的时候就有问题。他百思不得其解,然后找我讨论,sql大概是下面的样子:select a.name , b.namefrom stuent a , class b on a.name=b.name 我乍一看,貌似是没问题的啊,内连接的 inner j...原创 2020-04-30 10:48:18 · 1087 阅读 · 0 评论 -
MySQL大表数据处理
最近,领导发话了,要处理数据量很大的表,提前规避因数据量大而导致,查询、更新操作缓慢的问题。 数据量很大的表,我看了下,最多的records表,2400w条记录。 拉上DBA,一起断断续续的讨论了一个多星期,确定了方案(还不是最终方案,哎,跨部门协作,效率是真低) 前前后后讨论了四种方案,这里记录一下心路历程。1.分区 - 时间 最初是DBA提出的分区方案,分区键是...原创 2020-04-22 18:10:30 · 1139 阅读 · 0 评论 -
MySQL中IN对NULL的处理
先说结论,MySQL中NULL是不参与计算的,对NULL进行计算,只可以使用预设的IS NULL和IS NOT NULL来操作 student表中,有三条数据,id分别是1、2、3SELECT *FROM studentWHERE id IN (1,2,NULL) 会查询出来id=1和id=2的记录SELECT *FROM ...原创 2020-01-08 09:30:49 · 8929 阅读 · 0 评论 -
事务具有4个属性:原子性、一致性、隔离性、持久性
事务是指对系统进行的一组操作,为了保证系统的完整性,事务需要具有ACID特性,具体如下:1. 原子性(Atomic) 一个事务包含多个操作,这些操作要么全部执行,要么全都不执行。实现事务的原子性,要支持回滚操作,在某个操作失败后,回滚到事务执行之前的状态。 回滚实际上是一个比较高层抽象的概念,大多数DB在实现事务时,是在事务操作的数据快照上进行的(比如,MVCC),并不修改实际的数...转载 2016-12-21 22:26:17 · 3164 阅读 · 0 评论 -
分页与分库那些事儿(好文!)
前序文章:《互联网数据库“跨库分页”架构技术实践》问:目前准备做数据库水平切分,需要注意什么关键问题?目前了解需要避免跨库事务,请老师指点。答:需要注意分库patition key的选取,要保证两个均衡:数据量的均衡,请求量的均衡。库后,需要注意分之前用SQL满足的需求是否还能满足,需要怎么改进满足,例如max, min, avg转载 2017-03-06 10:37:59 · 3303 阅读 · 1 评论 -
数据库村的旺财和小强 MVCC
这是一篇超级干的干货,尤其是MVCC部分,很烧脑,挑战一下吧。1丢失的数据旺财是数据库村的一个程序, 小强也是。数据库村有个特点, 很多数据支持共享操作,多个程序可以同时读写,他们俩经常会为了读写同一个数据, 争夺的不可开交。这一天,当旺财和小强对同一个银行账户A进行写操作时候, 出现了这么一个错误:看看, 本来旺财要加上的20元就丢掉了。 同样的事情发生的多了, 他俩给这种情况起了一个名字,叫...转载 2018-03-26 22:11:56 · 2585 阅读 · 1 评论 -
mysql 获取当前月的第一天到昨日的所有日期
SELECT ADDDATE(y.first, x.d - 1) as dFROM ( SELECT 1 AS d UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT原创 2018-03-28 15:01:40 · 3307 阅读 · 0 评论 -
mysql 内连接、左连接会出现笛卡尔积?
这周的部门周会,分享的同事说的是数据库优化相关,过程中,一个同事跟我讨论左连接查询,是不是笛卡尔积。我第一反应,左连接肯定不是笛卡尔积啊,左连接是以左表为准,左表有m条记录,则结果集是m条记录(哈哈,如果是你,你是不是也是这样的反映),同事听了,说内连接会是笛卡尔积。听到这句话的我的表情是这样的 散会后,在数据库里试验了一下,发现,事实比想象中要复杂。首先说下结论:链接查询,如果on...原创 2018-07-14 19:16:04 · 37169 阅读 · 17 评论 -
like百分号前置不会走索引?NO!
“模糊查询,前置百分号不走索引;后置百分号才会走索引”这可能是大部分人都知道的“常识”,然而,这周在做SQL优化的时候,无意中碰到了意外情况–模糊查询,前置百分号也走索引!举个栗子 表: TEST_USER 索引:INDEX_MOBILECREATE TABLE `TEST_USER` ( `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT ...原创 2019-01-22 15:14:50 · 7134 阅读 · 7 评论 -
数据库分表后 如何优雅的扩容
停服方案 很low的方式,【停服方案】,先发公告,再停机,再迁移数据,测试没问题再发布。双倍扩容法 按id取膜,假设,开始是 %2, %2=0 –>库0 %2=1 –>库1 1.双倍扩容,扩容后是四个, %4 库0和库1 依旧,多出来库00和库11,库0和库00互为主从,库1和库11也互为主从。 2.待数据同步完毕,修改路由规则, %2 –> %...原创 2019-06-19 16:02:33 · 1428 阅读 · 0 评论 -
mysql使用in查询 若不加引号,只会匹配前16位
原创 2019-08-14 17:22:22 · 889 阅读 · 0 评论 -
mysql 行转列
行转列 案例一1.准备表和数据CREATE TABLE test_user ( name varchar(50) DEFAULT NULL, subject varchar(50) DEFAULT NULL, score int(11) DEFAULT NULL);insert into test_user values('zhangsan' , 'chinese...原创 2016-02-23 16:46:41 · 2594 阅读 · 0 评论 -
mysql 共享锁(s)和排他锁(x)
共享锁:若事务T在A对象上加上共享锁S,则其他事务不可修改A对象,但是,可以查询A对象、可以在A对象上加共享锁(不可加排他锁(X)) 此时,事务T也不可以对A对象进行修改,其他事务在T提交之前也不可以对A对象进行修改。 共享锁用法:lock in share mode,比如 select name from table where id=1 lock in share mode;原创 2016-12-27 16:00:28 · 5810 阅读 · 0 评论 -
MySQL 中你应该使用什么数据类型表示时间?
当你需要保存日期时间数据时,一个问题来了:你应该使用 MySQL 中的什么类型?使用 MySQL 原生的 DATE 类型还是使用 INT 字段把日期和时间保存为一个纯数字呢?在这篇文章中,我将解释 MySQL 原生的方案,并给出一个最常用数据类型的对比表。我们也将对一些典型的查询做基准测试,然后得出在给定场景下应该使用什么数据类型的结论。如果你想直接看结论,请翻到文章最下方。转载 2016-09-12 10:03:21 · 15611 阅读 · 1 评论 -
数据库的运维策略脚本篇SQL SERVER(内附脚本,无私分享)
数据库运维中盛传一个小段子,我误删除了数据库,改怎么办?有备份还原备份,没有备份就准备简历!听起来有趣但发生在谁身上,谁都笑不起来。接触了很多的客户发现90%客户的运维策略都不是很完善。本篇就分享一些常规的运维脚本,本篇没有涉及到的或不足的也请大家留言无私贡献深藏多年的脚本,谢谢!邮件 邮件主要用来监控作业是否运行成功,如果您已经配置了类似zabbix等软件请忽略。配置邮转载 2016-10-09 09:10:53 · 4311 阅读 · 1 评论 -
mysql 游标的使用
之前在使用存储过程,一般是在数据库指定查询数据,然后修改数据。所以,一直都没有使用到游标。一直到某天,在使用存储过程中,我希望使用一个类似java的集合的场景(假如不使用游标,那么会增加很多sql查询!)DROP PROCEDURE if EXISTS demoPro;CREATE PROCEDURE demoPro()BEGIN DECLARE done int DEFAUL原创 2016-01-30 18:57:16 · 2705 阅读 · 0 评论