MySQL
Jakob_Hu
当你无助时
展开
-
SQL基础优化(1):定位、分析慢SQL
定位、分析慢SQL定位慢SQL(慢查询)慢查询日志定位show processlist 定位SQL优化的前提是对慢SQL进行定位,之后使用不同的方式对其进行分析。如果某个设计数据库的功能需要很久才能返回数据,就应该去分析是否是因为慢查询导致的。定位慢SQL(慢查询)定位慢SQL有两种解决方式,查看慢查询日志,确定已经执行完的慢查询show processlist查看正在执行的慢查询...原创 2019-10-19 20:28:31 · 861 阅读 · 0 评论 -
MySQL基础优化(2):正确利用条件字段索引
正确利用条件字段索引函数操作1)验证对条件字段使用函数是否能走索引2)对条件字段使用函数操作不走索引的原因3)函数操作的SQL优化隐式转换1)隐式转换定义及规则2)验证隐式转换能否走索引3)不走索引的原因4)隐式转换SQL优化模糊查询1)分析模糊查询2)模糊查询优化范围查询1)构造不能使用索引的范围查询2)范围查询SQL优化计算操作1)计算操作的执行效率2)计算操作SQL优化总结MySQL中,如...原创 2019-10-19 22:33:15 · 1016 阅读 · 0 评论 -
MySQL基础优化(3):高效导入数据
高效导入数据一次插入多行的值1)文件准备一条语句含多行数据一条语句含一行数据2)导入时间对比关闭自动提交1)开启与关闭自动提交导入效率对比2)原因分析参数调整1)参数说明2)写入速度测试一次插入多行的值插入行所需时间有以下因素决定,连接:30%向服务器发送查询:20%解析查询:20%插入行:10% * 行的大小插入索引:10% * 索引数结束:10%大部分的时间消耗在客户端与...原创 2019-10-20 01:11:11 · 913 阅读 · 0 评论 -
MySQL基础优化(4):正确使用order by和group by
正确使用排序和分组order by原理1)MySQL排序方式2)Filesort排序详情Filesort的排序模式(sort_mode)单路模式排序过程双路模式排序过程max_length_for_sort_data影响排序模式order by优化1)添加合适索引排序字段添加索引多字段排序优化先等值查询再排序2)去掉不必要的返回字段3)修改参数值4)几种无法利用索引排序的情况(牢记)先范围查询后排...原创 2019-10-20 16:23:08 · 938 阅读 · 0 评论 -
MySQL基础优化(5):优化分页查询
分页查询根据自增且连续的主键排序的分页查询根据非主键字段排序的分页查询有时业务遇到分页查询的需求,如select a,b,c from t1 limit 10000,10;上述语句从t1表中取出从10001条记录开始的10行记录。该语句的实际执行过程如下,先读取10010条记录抛弃前10000条记录,返回后10条记录查询一张大表比较靠后的数据时,执行效率是非常低的。创建一张大表...原创 2019-10-20 17:38:14 · 724 阅读 · 0 评论 -
MySQL基础优化(6):高效join语句
高效join语句关联查询算法1) NLJ算法2)BNL算法3)BKA算法优化管理查询1)关联字段添加索引2)小表做驱动表3)临时表有时来自一张表的数据不能满足查询需求,很多时候都涉及到多张表的连接查询。首先创建测试表,use test; drop table if exists t1; CREATE TABLE t1 ( id int(11) NOT NULL auto_increme...原创 2019-10-21 01:00:20 · 224 阅读 · 0 评论 -
MySQL基础优化(7):高效count函数
高效count函数重新认识count函数1)count(*)和count(字段)的区别2)MyISAM引擎和InnoDB引擎count(*)的区别3)5.7.18版本前后count(*)的区别4)count(1)和count(*)效率比较优化count1)show table status2)增加计数表count方法用于统计记录数目是很常见的,但是如果使用不当会导致效率低下。首先创建测试表,...原创 2019-10-21 01:29:55 · 939 阅读 · 0 评论 -
MySQL索引(1):InnoDB存储引擎概述
InnoDB引擎概述InnoDB常见索引索引相关数据结构1)二分法查找2)二叉查找树和平衡二叉树3)B+树索引是数据库应用和开发的重要方面。索引过少,查询性能会有影响;反之,过多,对应用的性能也有产生影响。在实际开发中,会在创建索引时取一个平衡点。InnoDB常见索引InnoDB支持如下常见索引,B+树索引全文索引哈希索引InnoDB支持的哈希索引时自适应的,根据表的使用情况自动...原创 2019-10-24 17:55:32 · 458 阅读 · 0 评论 -
MySQL索引(2):B+树索引基本概念
B+树索引基本概念聚簇索引辅助索引B+索引的分裂B+树索引的管理及Cardinality值B+树索引的本质就是B+树在数据库中的实现,但是B+树索引在数据库中有一个特点是高扇出性,所以在数据库中B+树的高度一般在2到4层,即查找某个键值的行记录最多需要2到4次IO。B+树索引可以分为聚簇索引(一级索引)和辅助索引(二级索引),二者都是B+树,叶节点存放数据。二者的区别在于聚簇索引的叶节点存放的...原创 2019-10-24 21:15:37 · 568 阅读 · 0 评论 -
MySQL索引(3):B+树索引的使用
B+树索引使用OLTP和OLAP需要使用索引的情况联合索引OLTP和OLAP数据库存在两种类型的应用,OLTP和OLAP应用。联机事务处理OLTP(on-line transaction processing) 主要是执行基本日常的事务处理,比如数据库记录的增删查改。比如在银行的一笔交易记录,就是一个典型的事务。OLTP的特点一般有:实时性要求高。银行异地汇款对实时处理能力有高要求。...原创 2019-10-25 16:46:08 · 436 阅读 · 0 评论 -
MySQL锁(1):MySQL全局锁和表锁
全局锁与表锁锁的概念数据准备全局锁表锁和元数据锁1)表锁表锁使用场景及分类表锁上锁命令表读锁使用表写锁使用表锁使用总结2)元数据锁(MDL)元数据锁相关概念元数据锁阻塞示例online DDL插队现象锁的概念锁用于协调多个客户端对同一数据的并发访问,保证并发访问时数据的有效性和一致性。MySQL的锁分为全局锁、表锁和行锁。数据准备创建一个表格,对后续锁的使用演示做准备。CREATE T...原创 2019-10-27 22:39:48 · 511 阅读 · 0 评论 -
MySQL锁(2):行锁
行锁事务隔离级别InnoDB行锁模式1)共享锁和排它锁2)意向锁RC级别下行锁实验1)通过非索引字段查询2)通过唯一索引查询3)通过普通索引查询RC级别下的间隙(gap)RR级别下行锁实验MySQL数据库中InnoDB引擎支持行锁,。事务隔离级别不同的事务隔离级别对应的行锁是不同的,对应的行锁的锁定范围也是不同的。隔离级别说明read uncommitted 读未提交...原创 2019-10-28 11:16:04 · 859 阅读 · 1 评论 -
MySQL锁(3):死锁
死锁死锁概念死锁的解决1)设置超时时间2)wait-for graph死锁示例1)AB-BA死锁2)特殊死锁降低死锁发生概率分析死锁的方法死锁概念死锁是指两个及以上的事务在执行过程中因争锁造成的相互等待。解决死锁一般有两种方法,设置超时时间:两个事务等待过程实际上是阻塞过程,对参数innodb_lock_wait_timeout进行设定来设置超时时间。wait-for graph检验死...原创 2019-10-28 20:22:37 · 771 阅读 · 0 评论 -
MySQL锁(4):乐观锁与悲观锁
乐观锁与悲观锁乐观锁1)乐观锁特点2)乐观锁实现版本号机制CAS算法3)乐观锁缺点悲观锁乐观锁与悲观锁使用场景乐观锁1)乐观锁特点乐观锁( Optimistic Locking ) 假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测。如果发现冲突了,则返回错误的信息,让用户决定如何去做。2)乐观锁实现实现乐观锁一般有以下2种方式,版本号机...原创 2019-10-28 21:15:45 · 469 阅读 · 0 评论 -
MySQL事务(1):事务实现
事务实现事务分类1)扁平事务2)带有保存点的扁平事务3)链事务4)嵌套事务5)分布式事务redo log1) redo log构成2) redo log和bin log事务是数据库区别于文件系统的重要特性,由一条或一组SQL语句组成。事务将数据库从一种一致状态转换为另一种一致状态。事务应当完全符合ACID特性,atomicity,原子性事务是不可分割的工作单位,事务中的操作语句要么全部完...原创 2019-11-05 11:09:09 · 901 阅读 · 0 评论 -
MySQL事务(2):事务控制
事务控制事务控制语句1)常用事务语句2)差异辨析3)注意事项已正确执行语句不会自动回滚rollback to savepoint并非结束事务隐式提交SQL语句事务控制语句MySQL默认设置下,事务都是自动提交的,即SQL执行后会立即执行commit操作。1)常用事务语句显式的开启一个事务需要使用begin、start transaction或者执行set autocommit=0,通过这些...原创 2019-11-06 22:18:44 · 1276 阅读 · 0 评论