摘要: Mysql 系列文章主页 Tips:在阅读本文前,最好先阅读 这篇(Mysql锁机制--行锁)文章~ 在上篇文章中,我们看到InnoDB默认的行锁可以使得操作不同行时不会产生相互影响、不会阻塞,从而很好的解决了多事务和并发的问题。但是,那得基于一个前提,即 Where 条件中使用上了索引;反之,如果 阅读全文
posted @ 2018-04-24 15:21 cyhbyw 阅读(5971) 评论(1) 推荐(3) 编辑
摘要: Mysql 系列文章主页 1 准备数据 1.1 建表 1.2 插入数据 提示:这里插入了 id=1 & id=3 的两条记录,偏偏没有插入 id=2 的记录,这是为什么呢?后面会用到。 2 测试 2.1 准备 还是老规矩,两个会话(终端),左边是白色背景的,右边是黑色背景的,并且均设置 autoco 阅读全文
posted @ 2018-04-24 15:21 cyhbyw 阅读(688) 评论(0) 推荐(0) 编辑
摘要: Mysql 系列文章主页 1 准备数据 1.1 建表 注意:ENGINE 是 INNODB(因为 InnoDB 才支持行锁) 1.2 插入数据 2 测试 2.1 测试前准备 准备两个会话(终端、命令行),一个白色的(记为:左),一个黑色的(记为:右) 两个会话均设置 autocommit = 0 命 阅读全文
posted @ 2018-04-24 15:20 cyhbyw 阅读(951) 评论(0) 推荐(0) 编辑
摘要: Mysql 系列文章主页 1 准备数据 1.1 建表 1.1.1 建立 Employee表 1.1.2 建立 Department 表 1.1.3 注意:上述两张表的存储引擎都是 MyISam 1.2 插入数据 2 测试 2.1 给 Employee 表加上写锁 2.2 查询 Employee 表 阅读全文
posted @ 2018-04-24 15:17 cyhbyw 阅读(378) 评论(0) 推荐(0) 编辑
摘要: Mysql 系列文章主页 1 概念 在 Java 程序中,当多线程并发访问某个资源的时候,如果有非线程安全的操作,那么需要通过加锁来保护之。同理,在 Mysql 中,如果也有多个线程、多个事务并发访问某些资源(比如写同一行记录)时,也需要锁来保护,以确保数据的正确性。 2 分类 从对数据的操作类型来 阅读全文
posted @ 2018-04-24 15:16 cyhbyw 阅读(301) 评论(0) 推荐(1) 编辑
摘要: Mysql 系列文章主页 1 准备数据 1.1 建表 1.1.1 建立 Employee表 1.1.2 建立 Department 表 1.1.3 注意:上述两张表的存储引擎都是 MyISam 1.2 插入数据 2 测试 2.1 给 Employee 表加上读锁 2.2 查询 Employee 表 阅读全文
posted @ 2018-04-24 15:16 cyhbyw 阅读(387) 评论(0) 推荐(0) 编辑
摘要: Mysql 系列文章主页 默认没有开启慢查询日志功能。如果不是调优需要的话,一般不建议开启。 查看是否开启慢查询日志: 开启: 如果开启了此功能,那,什么样的Sql才会被记录到慢查询日志里面呢? 这是由参数 long_query_time 控制的,默认值 10秒,查看命令如下: 注意:是要严格大于  阅读全文
posted @ 2018-04-24 15:15 cyhbyw 阅读(215) 评论(0) 推荐(0) 编辑
摘要: Mysql 系列文章主页 是Mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于Sql的调优的测量。默认情况下处于关闭状态,并保存最近 15 次的运行结果。 查看功能是否开启: 如果关闭,则需要开启: 1 准备数据 1.1 建表、函数、存储过程 执行 这篇(调用函数和存储过程批量插入 阅读全文
posted @ 2018-04-24 15:15 cyhbyw 阅读(252) 评论(0) 推荐(0) 编辑
摘要: Mysql 系列文章主页 1 建立 Employee 表 2 建立 Department 表 3 建立一个产生随机 N 位字符串的函数 4 建立一个产生 [1001, 1100] 数字的函数 5 相看函数是否创建成功 结果如下图: 6 建立批量插入 Employee 表的存储过程 7 建立批量插入  阅读全文
posted @ 2018-04-24 15:14 cyhbyw 阅读(529) 评论(0) 推荐(0) 编辑
摘要: Mysql 系列文章主页 本文将以真实例子来讲解小表驱动大表(In,Exists区别) 1 准备数据 1.1 创建表、函数、存储过程 参照 这篇(调用函数和存储过程批量插入数据) 文章中的第 1-7 步,注意,不要执行第8步 1.2 插入数据 现在来执行第8步。 1.2.1 向 Department 阅读全文
posted @ 2018-04-24 15:13 cyhbyw 阅读(623) 评论(0) 推荐(0) 编辑
摘要: Mysql 系列文章主页 ORDER BY 子句,尽量使用 Index 查询,避免使用 FileSort 排序 尽可能在索引列上完成排序操作,遵照索引的最佳左前缀原则 1 准备数据 1.1 建表 1.2 插入数据 2 测试&Explain分析 2.1 创建索引 2.2 测试 Case#1: Case 阅读全文
posted @ 2018-04-24 15:13 cyhbyw 阅读(441) 评论(0) 推荐(0) 编辑
摘要: Mysql 系列文章主页 1 准备数据 1.1 建表 1.2 插入数据 2 测试&Explain分析 2.1 建立索引 2.2 测试 Case#1:用到一个索引(注意:key_len=31) Case#2:用到两个索引(注意:key_len=62) Case#3:用到三个索引(注意:key_len= 阅读全文
posted @ 2018-04-24 15:12 cyhbyw 阅读(2630) 评论(2) 推荐(0) 编辑
摘要: Mysql 系列文章主页 1 准备数据 1.1 建表 1.2 插入数据 2 测试&Explain分析 2.1 创建索引 2.2 测试 结果:type=all,索引失效,全表扫描。 3 结论 OR连接时会索引失效 阅读全文
posted @ 2018-04-24 15:11 cyhbyw 阅读(598) 评论(0) 推荐(0) 编辑
摘要: Mysql 系列文章主页 1 准备数据 1.1 建表 1.2 插入数据 注意:此处的 name = '11223344',这是一个数字,但,也是一个字符串,对吧~ 2 测试&Explain分析 2.1 创建索引 2.2 测试 Case#1:有单引号 结果:type=ref,索引正常使用。 Case# 阅读全文
posted @ 2018-04-24 15:10 cyhbyw 阅读(1297) 评论(0) 推荐(0) 编辑
摘要: Mysql 系列文章主页 1 准备数据 1.1 建表 1.2 插入数据 2 测试&Explain分析 2.1 有索引的情况下%的影响(提出问题) 2.1.1 建立索引 2.1.2 测试&Explain分析 Case#1:两边都是% 结果:type=all,全表扫描 Case#2:左边是% 结果:ty 阅读全文
posted @ 2018-04-24 15:10 cyhbyw 阅读(1330) 评论(1) 推荐(2) 编辑
摘要: Mysql 系列文章主页 1 数据准备 1.1 建表 注意:name 字段上加了 NOT NULL 限制 1.2 插入数据 2 测试&Explain分析 2.1 建立索引 2.2 测试 Case#1:索引生效 分析:name 等于一个常量,当然能够使用索引 Case#2:索引失效(IS NULL) 阅读全文
posted @ 2018-04-24 15:09 cyhbyw 阅读(7337) 评论(2) 推荐(0) 编辑
摘要: Mysql 系列文章主页 1 准备数据 1.1 建表 1.2 插入数据 2 测试&Explain分析 2.1 创建索引 2.2 测试 Case#1: 注意:SELECT中使用了 'SELECT *' ,且Extra中是 'Using index condition' Case#2: 注意:SELEC 阅读全文
posted @ 2018-04-24 14:35 cyhbyw 阅读(647) 评论(1) 推荐(0) 编辑
摘要: Mysql 系列文章主页 1 准备数据 1.1 建表 1.2 插入数据 2 测试&Explain分析 2.1 创建索引 2.2 测试 Case#1:使用等于 结果:索引可以正常被使用 Case#2:使用不等于 结果:无法使用索引,全表扫描 3 结论 使用不等于的时候无法使用索引导致全表扫描 阅读全文
posted @ 2018-04-24 14:35 cyhbyw 阅读(2464) 评论(1) 推荐(0) 编辑
摘要: Mysql 系列文章主页 1 准备数据 1.1 建表 1.2 插入数据 2 测试&Explain分析 2.1 创建索引 2.2 测试 Case#1:只有 name 且是等于 Case#2:name & age 且是等于 Case#3:name & age & pos 且是等于 Case#4:name 阅读全文
posted @ 2018-04-24 14:32 cyhbyw 阅读(1150) 评论(1) 推荐(1) 编辑
摘要: Mysql 系列文章主页 最佳左前缀法则学习和Demo演示 1 准备数据 1.1 建表 1.2 插入数据 2 测试&Explain分析 2.1 创建索引 创建了一个基于 name, age, pos 三个字段的索引 2.2 索引测试 Case#1:只根据 name 字段来查询 结果: type=re 阅读全文
posted @ 2018-04-24 14:31 cyhbyw 阅读(5445) 评论(6) 推荐(3) 编辑