![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 94
无法无天过路客
Java程序员一枚,喜欢记录收集技术文章
展开
-
怎么分析一条 SQL 的性能
这篇文章将给大家介绍如何使用 explain 来分析一条 sql 。网上其实已经有非常多的文章都很详细的介绍了 explain 的使用,这篇文章将实例和原理结合起来,尽量让你有更好的理解,相信我,认真看完你应该会有特别的收获。explain 翻译过来就是解释的意思, 在 mysql 里被称作执行计划,即可以通过该命令看出 mysql 在经过优化器分析后决定要如何执行该条 sql 。说到优化器,再多说一句,mysql 内置了一个强大的优化器,优化器的主要任务就是把你写的 sql 再给优化一下,尽可能以更转载 2020-07-07 22:07:02 · 415 阅读 · 0 评论 -
数据库优化的几个阶段
引言大家在面试的时候,是否遭遇过,面试官询问你们是如何进行数据库优化的?那这个问题应该怎么答呢?第一阶段 优化sql和索引这才是调优的第一阶段啊,为什么呢?因为这一步成本最低啊,不需要加什么中间件。你没经过索引优化和SQL优化,就来什么水平拆分,这不是坑人么。那步骤是什么样呢?我说个大概(1)用慢查询日志定位执行效率低的SQL语句(2)用explain分析SQL的执行计划(3)确定问题,采取相应的优化措施,建立索引啊,等第二阶段 搭建缓存在优化sql无法解决问题的情况下,才考虑搭转载 2020-07-06 21:56:35 · 360 阅读 · 1 评论 -
优化过后把 SQL 执行效率提高了 10,000,000 倍
场景我用的数据库是mysql5.6,下面简单的介绍下场景课程表: 数据100条create table Course( c_id int PRIMARY KEY, name varchar(10))学生表: 数据70000条create table Student( id int PRIMARY KEY, name varchar(10))学生成绩表:数据70w条CREATE table SC( sc_id int PRIMARY KEY, s_id i转载 2020-07-06 21:46:14 · 405 阅读 · 0 评论 -
明明使用了索引SQL查询还是慢的原因
案例剖析为了实验,我创建了如下表:CREATE TABLE `T`(`id` int(11) NOT NULL,`a` int(11) DEFAUT NULL,PRIMARY KEY(`id`),KEY `a`(`a`)) ENGINE=InnoDB;该表有三个字段,其中用id是主键索引,a是普通索引。首先SQL判断一个语句是不是慢查询语句,用的是语句的执行时间。他把语句执行时间跟long_query_time这个系统参数作比较,如果语句执行时间比它还大,就会把这个语句记录到慢查询日志里转载 2020-07-06 21:11:03 · 2409 阅读 · 2 评论 -
MySQL性能优化指南
MySQL性能1. 最大数据量抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。文件系统单文件大小限制FAT32最大4GNTFS最大64GBNTFS5.0最大2TBEXT2块大小为1024字节,文件最大容量16GB;块大小为4096字节,文件最大容量2TBEXT3块大小为4KB,文件最大容量为4TBEXT4理论可以大于16TB《阿里巴巴Java开发手册》提出单表行数超过500万行转载 2020-07-06 20:54:32 · 284 阅读 · 0 评论 -
数据库索引
之前朋友在面试的时候被问到了许多关于索引的问题,而索引这个词一直也是我们在开发中最最最常见的,也是很多在进行性能优化的时候会去做的一件事情,所以今天我们就来说说面试中关于索引的那点事。索引什么是索引?索引其实是数据库的一种术语,在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑...转载 2020-04-24 22:12:10 · 152 阅读 · 0 评论 -
为什么MySQL的索引要使用B+树,而不是其它树?比如B树?
InnoDB的一棵B+树可以存放多少行数据?答案:约2千万为什么是这么多?因为这是可以算出来的,要搞清楚这个问题,先从InnoDB索引数据结构、数据组织方式说起。计算机在存储数据的时候,有最小存储单元,这就好比现金的流通最小单位是一毛。在计算机中,磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)的最小单元是块,一个块的大小是4k,而对于InnoD...转载 2020-04-24 21:44:29 · 184 阅读 · 0 评论 -
MySQL的自增ID用完了,怎么办?
首先,创建一个最简单的表,只包含一个自增id,并插入一条数据。create table t0(id int unsigned auto_increment primary key) ;insert into t0 values(null);通过show命令 show create table t0; 查看表情况CREATE TABLE `t0` ( `id` int(10) unsign...转载 2020-04-24 21:04:35 · 208 阅读 · 0 评论 -
数据库分库、分表、分区的区别
分区这里讲的分区,此“区”非彼“区”,这里讲的分区的意思是指将同一表中不同行的记录分配到不同的物理文件中,几个分区就有几个.idb文件MySQL在5.1时添加了对水平分区的支持。分区是将一个表或索引分解成多个更小,更可管理的部分。每个区都是独立的,可以独立处理,也可以作为一个更大对象的一部分进行处理。这个是MySQL支持的功能,业务代码无需改动。要知道MySQL是面向OLTP的数据,它不像...转载 2020-04-24 20:44:10 · 4498 阅读 · 1 评论 -
Insert into select语句的坑
前言Insert into select请慎用。这天xxx接到一个需求,需要将表A的数据迁移到表B中去做一个备份。本想通过程序先查询查出来然后批量插入。但xxx觉得这样有点慢,需要耗费大量的网络I/O,决定采取别的方法进行实现。通过在Baidu的海洋里遨游,他发现了可以使用insert into select实现,这样就可以避免使用网络I/O,直接使用SQL依靠数据库I/O完成,这样简直不要太棒...转载 2020-04-24 20:15:06 · 3565 阅读 · 2 评论 -
数据库缓存最终一致性的四种方案
背景缓存是软件开发中一个非常有用的概念,数据库缓存更是在项目中必然会遇到的场景。而缓存一致性的保证,更是在面试中被反复问到,这里进行一下总结,针对不同的要求,选择恰到好处的一致性方案。缓存是什么存储的速度是有区别的。缓存就是把低速存储的结果,临时保存在高速存储的技术。如图所示,金字塔更上面的存储,可以作为下面存储的缓存。我们本次的讨论,主要针对数据库缓存场景,将以redis作为mysq...转载 2020-04-23 21:48:28 · 183 阅读 · 0 评论 -
DB2多行转一行【XML2CLOB方式】
场景:table1和table2是一对多关系,想要在同一条SQL中把table1和table2的数据全部查出来方案:通过DB2的XML2CLOB将多的表合并成一个column,然后在结果中通过Java代码解析成集合SELECT T1.ID, T2.NAME, (SELECT XML2CLOB(XMLAGG(XMLELEMENT(NAME \"X\",T2.CARD_ID))) FROM T...原创 2019-08-15 15:46:10 · 1558 阅读 · 0 评论