- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
mysql锁机制join使用选编
1.sql使用技巧,子查询优化
2.如何进行行列转换
3.mysql 锁机制
4.mysql架构优化,性能提升,维护成本
;;;TAB A;
;
;
;
如何更新包含在FROM从句中的表
最容易想到:
Update tab1 set ms=“rs”where other ms in (select ms from tab1 a join tab2 b on a.ms=b.ms );
;
;JOIN帮你解决难题
UPDATE tab1 a join (select b.name from tab1 a join tab2 b on a.name=b.name ) b on a.name=b.name set a.other =‘res’;
拭目以待:
;如何使用join优化子查询
场景设定:
在通过表1去查看表2中关联字段的情况
Select a.name,a.age ,(select b.女朋友 from tab2 b where a.name=b.name) from tab1 a;;如何使用join优化子查询
(不使用子查询)
Select a.name,a.age,b.girlgriend from tab1 a left join tab2 b on a.name=b.name;
;如何使用join优化聚合查询
模拟场景
查询出某人在某个时间交的女朋友的最多的日期
; 不难想出:
; 优化该聚???查询的方法
避免子查询
;
对分组前的数据用where
对分组后的数据用having
聚合函数中体现出having
;利用cross join
select * from(
select sum(b.kills) as 猪八戒 from srz a join kills b on a.id=b.user_id and
a.name=猪八戒 ) a cross join
(
select sum(b.kills) as 唐僧 from srz a join kills b on a.id=b.user_id and
a.name=唐僧 ) b cross join
(
select sum(b.kills) as 孙悟空 from srz a join kills b on a.id=b.user_id and
a.name=孙悟空) c cross join
(
select sum(b.kills) as 沙僧 from srz a join kills b on a.id=b.user_id and
a.name=沙僧) d ;;利用case when
select sum(case when name=孙悟空 then kills end) as 孙悟空,sum(case whe
n name=猪八戒 then kills end) as 猪八戒,sum(case when name=唐僧 then kills e
nd) 唐僧 from srz a join kills b on a.id=b.user_id;;
行级锁定(row-level)
表级锁定(table-level)
页级锁定(level)
;
特点:锁定对象的颗粒度很小,提高并发
弊端:锁定对象颗粒小,每次获取锁和释放锁需要做的事情多,带来的消耗大
;
特点:锁对象的颗粒最大,流程简单,对系统造成的负面影响小
弊端:出现锁资源争抢的概率高;
特点:不太常见,锁定颗粒度介于上面两种之间
弊端:会发生死锁;;
;·;;;;;;
尽可能让所有的数据检索都通过索引来完成,从而避免Innodb因为无法通过索引键加锁而升级为表级锁定;
合理设计索引,让Innodb在索引键上面加锁的时候尽可能准确,尽可能的缩小锁定范围,避免造成不必要的锁定而影响其他Query的执行;
尽可能减少基于范围的数据检索过滤条件,避免因为间隙锁带来的负面影响而锁定了不该锁定的记录;
尽量控制事务的大小,减少锁定的资源量和锁定时间长度;
在业务环境允许的情况下,尽量使用较低级别的事务隔离,以减少MySQL因为实现事务隔离级别所带来的附加成本;
;show status like table%;;Show status like innodb_row_lock%;;
1.Sql优化 如何使用join优化sql查询
2.行列转换
3.锁的概念;;
mysql架构优化
性能提升
维护成本
文档评论(0)