MySQL
云图智联
这个作者很懒,什么都没留下…
展开
-
一次SQL查询优化原理分析(900W+数据,从17s到300ms)
有一张财务流水表,未分库分表,目前的数据量为9555695,分页查询使用到了limit,优化之前的查询耗时16 s 938 ms (execution: 16 s 831 ms, fetching: 107 ms),按照下文的方式调整SQL后,耗时347 ms (execution: 163 ms, fetching: 184 ms); 操作:查询条件放到子查询中,子查询只查主键ID,然后使用子查询中确定的主键关联查询其他的属性字段; 原理:减少回表操作; --优化前SQL SELECT各种字...原创 2020-07-29 17:34:00 · 248 阅读 · 0 评论 -
InnoDB一棵B+树可以存放多少行数据?
一个问题? InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。 我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。 在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k,而对于我们的InnoDB存储引擎也有自己的最小储存单元——页(Page)原创 2020-07-29 17:27:54 · 347 阅读 · 0 评论 -
MySQL:分库分表与分区的区别和思考
一.分分合合 说过很多次,不要拘泥于某一个技术的一点,技术是相通的。重要的是编程思想,思想是最重要的。当数据量大的时候,需要具有分的思想去细化粒度。当数据量太碎片的时候,需要具有合的思想来粗化粒度。 1.1 分 很多技术都运用了分的编程思想,这里来举几个例子,这些都是分的思想 集中式服务发展到分布式服务 从Collections.synchronizedMap(x)到1.7ConcurrentHashMap再到1.8ConcurrentHashMap,细化锁的粒度的同时依旧保...原创 2020-07-29 17:23:14 · 311 阅读 · 0 评论 -
MySQL:互联网公司常用分库分表方案汇总
一、数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。 1、IO瓶颈 第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。 第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 -> 分库。 2、CPU瓶颈 第一种:SQL问题,如SQL中原创 2020-07-29 17:00:40 · 212 阅读 · 0 评论 -
MySQL死锁系列-常见加锁场景分析【云图智联】
免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/ 本文我们就从原理走向实战,分析常见 SQL 语句的加锁场景。了解了这几种场景,相信小伙伴们也能举一反三,灵活地分析真实开发过程中遇到的加锁问题。 如下图所示,数据库的隔离等级,SQL 语句和当前数据库数据会共同影响该条 SQL 执行时数据库生成的锁模式,锁类型和锁数量。 下面,我们会首先讲解一下隔离等级、不同 SQL 语句 和 当前数据库数据对生成锁影响的基本规则,然后再依次具体 SQL 的加锁场景。 隔离等级原创 2020-07-17 09:03:49 · 138 阅读 · 0 评论 -
Mysql数据库教程(三)[云图智联]
1.1高级查询 1.1.1 EXISTS子查询 在实际开发中,我们常常会遇到表是否存在,及创建表等等的过程,mysql中如何对已存在的表进行提示并且进行创建呢?可以 使用exists子句对表创建进行判断生成。 语法: DROP TABLE IF EXISTS temp; CREATE TABLE temp ( … … #省略建表语句 ) ; 注意 : IF EXISTS子查询语句在上面的作用为判断表是否存在,如果表temp存在,那么就进行创建temp表,同样和我们的判断相似,存在返回...原创 2020-07-14 10:57:23 · 141 阅读 · 0 评论 -
SQL循环语句【云图智联】
前言 有时我们需要添加很多测试的数据 在不使用Java的情况下 如何用SQL语句进行添加 ? 本文将讲述单层循环,双层循环,以及日期循环 单层循环 测试表代码 create table test(location_id int ,location_name varchar(10)); 再编写存储过程,其中涉及到循环的使用。我们欲通过这个存储过程,来达到往表中插入数据的效果 drop procedure if exists insert_while; delimiter // create原创 2020-07-14 09:36:07 · 99 阅读 · 0 评论 -
Mysql数据库教程(二)[云图智联]
1.1数据库存储引擎 1.1.1存储引擎介绍 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎 因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(Table Type,即存储和操作此表的类型)。 1.1.2MySQL常用的存储引擎-InnoDB InnoDB 是原创 2020-07-13 11:54:12 · 149 阅读 · 0 评论 -
MySQL 也要删“blacklist”,万万没想到技术术语能有沦为技术债的一天【云图智联】
免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/ 7月1日,MySQL官方博客发文称,计划在数据库源代码和文档中停止使用master、slave、blacklist(黑名单)和whitelist(白名单)等术语,并使用source、replica、blocklist和allowlist等新术语替换现有术语。 MySQL是广受欢迎的开源数据库,在DB-Engine数据库排行榜中一直稳居第二。2000年,MySQL3.23.15正式...原创 2020-07-08 10:35:03 · 242 阅读 · 0 评论