你有一个订单表:

CREATE TABLE `sales_engineering_order_tmp` (`id` VARCHAR(32) NOT NULL COMMENT '主键ID',`order_no` VARCHAR(50) NOT NULL COMMENT '订单编号',`sync_dt` DATETIME DEFAULT NULL COMMENT '传单时间',`org_id` VARCHAR(32) NOT NULL COMMENT '商场id',`deleted` TINYINT(1) DEFAULT '0' COMMENT '是否删除',`creator` VARCHAR(50) NOT NULL COMMENT '创建人',`creator_id` VARCHAR(32) NOT NULL COMMENT '创建人id',`create_dt` DATETIME NOT NULL COMMENT '创建时间',`last_updator` VARCHAR(50) NOT NULL COMMENT '最后修改人',`last_updator_id` VARCHAR(32) NOT NULL COMMENT '最后修改人id',`last_update_dt` DATETIME NOT NULL COMMENT '最后修改时间',PRIMARY KEY (`id`),UNIQUE KEY `idx_order_no` (`order_no`),KEY `idx_order_org_id` (`org_id`),KEY `idx_order_creator_id` (`creator_id`),KEY `idx_order_sync_dt` (`sync_dt`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='工程单临时表';

背景:该表的数据量 1KW行,大小的话几十G
需求:找到各个800商场 (org_id)的最近传单(sync_dt)的一条单。800个商场,查出来最多800单

简单总结一下:慢查询的步骤

前步骤:慢查询日志
前步骤:通过 show processlist定位慢查询(正在运行中)
第一步,explain 看执行计划;
第二步,如果开启了 show profile,去看看该query id 的 每个状态 及其耗时时间;
第三步,用 trace 追踪 优化器是如何选择执行计划的。主要又 准备阶段 优化阶段 和 执行阶段。

不论是宽表还是窄表,它们一定各自都会有相应的优缺点

窄表较多,数据列会更加分散,编写关联查询的难度就会很大
数据项会有不同的安全级别,宽表中涉及的列过多,数据权限的管理会带来很大的挑战
窄表数据量通常较少,但是等量的数据项会创建更多的表,管理难度大
宽表数据量通常较大,单表占据的存储空间过大,会降低排序、分组等查询的性能

合理的索引是提升性能的关键

我们对索引的概念一定不会陌生,它能够加速表数据的查询,但是相应的,它也会占据一定的存储空间,也就是典型的以空间换时间的优化策略。另外,索引的存在,也会使插入、删除、更新的性能降低,因为这些操作都会伴随着索引的修改。所以,这一条设计规范所要追求的是空间与时间的平衡,达到既不占用过多的存储空间,也有较高的查询性能。

索引要建的合理,就必须要知晓并理解 MySQL 中索引创建和使用的特性:
一定要为作为搜索条件的字段创建索引,不是搜索条件的字段建索引反而会降低使用性能
选择区分度高的字段作为索引字段,重复性高的字段不要加索引,联合索引存在 “ 最左前缀 ” 的特性,不要建多余的索引。最后,如果一张表中已经存在了大量的数据,再去创建索引的过程会相当漫长,且可能会影响线上服务。此时,应该评估是否是在原表上增加索引还是创建新表并迁移数据。

索引

10 为什么添加索引能提高查询速度
11 哪些情况需要添加索引?
12 普通索引和唯一索引有哪些区别?
13 联合索引有哪些讲究
14 为什么MySQL会选错索引?

15 全局锁和表锁什么场景会用到
16 行锁:InnoDB替代MyISAM的重要原因
17 间隙锁的意义
18 为什么会出现死锁?
19 数据库忽然断电会丢数据吗?

事务

20 MVCC怎么实现的
21 不同事务隔离级别有哪些区别
22 养成好的事务习惯
23 细聊分布式事务
24 如何预防SQL注入

工作常见技能

25 主键是否需要设置为自增
26 MySQL是否需要开启查询缓存-
27 使用读写分离需要注意哪些?
28 哪些情况需要考虑分库分表?
29 如何安全高效地删除大量无用数据?
30 使用MySQL时,应用层可以这么优化

1架构 :如何设计一个关系性数据库呢?尽可能减少I/O



2索引 --问题与思考


3锁模块 --问题与思考

1 MyISAM 与InnoDB关于锁方面的区别是什么?

注意MyISAM存储引擎分析如下:表级锁

MyISAM对 select 查询的时候会加上表级别的读锁,update,delete,insert的时候会加上表级别的写锁,两个select就是两个读锁,上了两个共享锁

上锁

lock tables 你的表名  read/write

释放锁

unlock tables ;

MyISAM 先写后读,先写后写 会block 写锁也叫排他锁

MyISAM Select 也有排他锁

InnoDB使用二段锁:加锁和解锁分为两个步骤,autocommit设置有关

上读锁

InnoDB对select 进行了改进

结论1:Innodb在没有用到索引的时候,用的是表级锁 IS IX

结论2:Innodb在用到索引的时候,用的是行级锁/Gap锁

表级别锁直接在表的头部加上锁,所以锁的开销会比较小,行级锁需要扫描到表的该行去上锁。

4关键语法 – 复杂SQL常出的Group by 和 Having

5理论范式:SQL相关的经典书籍

可有可无的Mysql工作技巧 2相关推荐

  1. 可有可无的Mysql工作技巧

    跨节点Join的问题 只要是进行切分,跨节点Join的问题是不可避免的.但是良好的设计和切分却可以减少此类情况的发生.解决这一问题的普遍做法是分两次查询实现.在第一次查询的结果集中找出关联数据的id, ...

  2. 可有可无的Mysql工作技巧 3 -- 工作中用到的理论范式,工具,建模经验

    摄影并不仅仅是对现实世界的还原,更多时候是可以被⽤作传递观点和表达意⻅的⼯具 聚合与分组聚合 聚合函数则属于多行函数,表中的多行记录会参与计算,并返回一个数值,且它通常用于分组的相关统计. 所有的聚合 ...

  3. WEB程序员需要掌握的十大MySQL优化技巧

    WEB开发者不光要解决程序的效率问题,对数据库的快速访问和相应也是一个大问题.希望本文能对大家掌握MySQL优化技巧有所帮助. 1.优化你的MySQL查询缓存 在MySQL服务器上进行查询,可以启用高 ...

  4. 超详细的MySQL工作原理 体系结构

    超详细的MySQL工作原理 体系结构 妖精的杂七杂八 2020-08-13 13:54:12 了解MySQL(超详细的MySQL工作原理 体系结构) 1.MySQL体系结构 2.MySQL内存结构 3 ...

  5. 规模大的优化mysql_十大MySQL优化技巧

    1.优化你的MySQL查询缓存 在MySQL服务器上进行查询,可以启用高速查询缓存.让数据库引擎在后台悄悄的处理是提高性能的最有效方法之一.当同一个查询被执行多次时,如果结果是从缓存中提取,那是相当快 ...

  6. 腾讯云TVP大佬十年心血MySQL工作笔记,看完还不懂MySQL来打我!

    TVP简介(腾讯云最具价值专家) TVP(Tencent Cloud Valuable Professional),腾讯云最具价值专家,是腾讯云授予云计算领域技术专家的一个奖项.而今天小编分享的这份资 ...

  7. 了解MySQL(超详细的MySQL工作原理 体系结构)

    了解MySQL(超详细的MySQL工作原理 体系结构) 1.MySQL体系结构 2.MySQL内存结构 3.MySQL文件结构 4.innodb体系结构 一.了解MySQL前你需要知道的 引擎是什么: ...

  8. 防止人为误操作MySQL数据库技巧一例

    防止人为误操作MySQL数据库技巧一例 (本题来自老男孩培训内部学生问题,属于数据库安全技巧) 在若干年前,老男孩亲自遇到一个"命案",老大登录数据库update一个记录,结果忘了 ...

  9. mysql ef6 您的项目引用了最新版_您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧...

    转载至: http://www.cnblogs.com/Imaigne/p/4153397.html 您的项目引用了最新实体框架:但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mys ...

最新文章

  1. php 工商银行公众号支付代码_微信支付PHP SDK —— 公众号支付代码详解
  2. 《图解服务器网络架构》 学习笔记
  3. HTML5 飞鸽传书web service都发布到交互服务器
  4. Hongjin2 软件研发作为一项工程而言
  5. 外部导入方式添加背景图_web前端基础:CSS的三种导入方式说明
  6. linux服务器跟踪命令,Linux下使用strace命令来跟踪.htaccess的使用
  7. 许多新兴的互联网O2O企业,做的都是一些“无中生有”的事情
  8. PHP 相关 收藏
  9. sde自动备份到文件gdb
  10. Vue系列之-Idea进行Vue前端调试
  11. 网络安全——终端安全
  12. Linux下定时备份数据库
  13. 爱奇艺网络流量分析引擎QNSM及其应用
  14. VScode前进后退快捷键
  15. 小瓦怕扫地机器人_小瓦扫地机器人青春版app下载-小瓦扫地机器人米家app下载v5.6.81 安卓版-西西软件下载...
  16. 【机器学习】五种超参数优化技巧
  17. 串口的使用–蓝牙模块
  18. 查看联通GPON/4+1+WiFi(2.4G)光猫管理员密码的一种思路
  19. 从键盘输入若干行文本,每行以回车结束,以 ctrl+z 作为输入结束符,统计其行数
  20. 景观照明酒店照明LED筒灯等灯具价格的影响因素

热门文章

  1. python输入生日判断星座_用java编一个程序能通过用户输入的生日判断用户的星座。请大神们给点提示或者思路吧。规定不能自定义方法...
  2. kotlin中mainactivity无法直接调用xml中的控件_使用Kotlin高效地开发Android App(一)
  3. css 商城 两列_css大法之使用伪元素实现超实用的图标库(附源码
  4. HashMap由浅入深(jdk8)
  5. SQL Server 导入bak备份出错
  6. mysql之TIMESTAMP(时间戳)用法详解
  7. ubuntu16.04安装微信
  8. RestTemplate.getForObject返回List的时候处理方式
  9. chkdsk 和sfc.exe修复命令
  10. 年终总结-致敬2014