获得徽章 0
求职中...
我被公司开除了,再也不想上班了,心好累好累。我感觉我的人生已经失去了方向,哪里有温暖,哪里有港湾,让我受伤的心停一停靠一靠?今天是肯德基疯狂星期四,V 我 50 请我吃,倾听我的烦恼,让我重拾生活的信心。
12
赞了这篇沸点
兄弟们,一年一度点赞100马上提离职的活动又开始了,期待您的助力[送心]
92
求职中...
求职中...
MySQL打卡第十四天
## Explain 执行计划
1. id:id的值越大,代表优先级越高,越先执行。
2. select_type:表示 select 查询的类型,主要是用于区分各种复杂的查询,例如:普通查询、联合查询、子查询等。
3. table:查询的表名并不一定是真实存在的表,有别名显示别名,也可能为临时表。
4. partitions:查询时匹配到的分区信息。
5. type:查询使用了何种类型,它在 SQL优化中是一个非常重要的指标,以下性能从好到坏依次是:system > const > eq_ref > ref > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL。
6. possible_keys:表示在MySQL中通过哪些索引,能让我们在表中找到想要的记录,这个索引并不定一会是最终查询数据时所被用到的索引。
7. key:区别于possible_keys,key是查询中实际使用到的索引.
8. key_len:表示查询用到的索引长度(字节数),原则上长度越短越好。
9. ref:常见的有:const,func,null,关联字段。
10. rows:以表的统计信息和索引使用情况,估算要找到我们所需的记录,需要读取的行数。
11. filtered 这个是一个百分比的值,表里符合条件的记录数的百分比
12. Extra :不适合在其他列中显示的信息,Explain 中的很多额外的信息会在 Extra 字段显示。
展开
评论
MySQL打卡第十三天
学习了一条SQL语句在MySQL中如何执行的:

1. MySQL 主要分为 Server 层和引擎层,Server 层主要包括连接器、查询缓存、分析器、优化器、执行器,同时还有一个日志模块(binlog),这个日志模块所有执行引擎都可以共用,redolog 只有 InnoDB 有。
2. 引擎层是插件式的,目前主要包括,MyISAM,InnoDB,Memory 等。
3. SQL 等执行过程分为两类,一类对于查询等过程如下:权限校验---》查询缓存---》分析器---》优化器---》权限校验---》执行器---》引擎
4. 对于更新等语句执行流程如下:分析器----》权限校验----》执行器---》引擎---redo log prepare---》binlog---》redo log commit
展开
评论
MySQL打卡第十二天## 大表优化

1. 限制查询范围:务必禁止不带任何限制数据范围条件的查询语句。比如:我们当用户在查询订单历史的时候,我们可以控制在一个月的范围内;
2. 读写分离:经典的数据库拆分方案,主库负责写,从库负责读;
3. 垂直分区:根据数据库里表的相关特性进行拆分,简单来说垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表。
4. 水平分区:保持数据表结构不变,通过某种策略存储数据分片。这样每一片数据分散到不同的表或者库中,达到了分布式的目的。 水平拆分可以支撑非常大的数据量。
5. 数据库分片的常见方案:
- 客户端代理;
- 中间件代理;
6. 什么是数据库连接池?
7. 分库分表之后主键id如何处里,我们需要一个全局唯一的 id 来支持:
- UUID;
- 数据库自增 id ;
- 利用 redis 生成 id ;
- Twitter的snowflake算法 ;
- 美团的Leaf分布式ID生成系统 ;
展开
评论
MySQL打卡第十一天## 锁机制与InnoDB锁算法

1. MyISAM和InnoDB存储引擎使用的锁:
- MyISAM采用表级锁(table-level locking)。
- InnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁
2. 表级锁行级锁对比:
- 表级锁: MySQL中锁定 粒度最大 的一种锁,对当前操作的整张表加锁,实现简单,资源消耗也比较少,加锁快,不会出现死锁。其锁定粒度最大,触发锁冲突的概率最高,并发度最低,MyISAM和 InnoDB引擎都支持表级锁。
- 行级锁:MySQL中锁定 粒度最小 的一种锁,只针对当前操作的行进行加锁。 行级锁能大大减少数据库操作的冲突。其加锁粒度最小,并发度高,但加锁的开销也最大,加锁慢,会出现死锁。
3. InnoDB存储引擎的锁的算法有三种
- Record lock:单个行记录上的锁
- Gap lock:间隙锁,锁定一个范围,不包括记录本身
- Next-key lock:record+gap 锁定一个范围,包含记录本身
4. innodb对于行的查询使用next-key lock
5. Next-locking keying为了解决Phantom Problem幻读问题
6. 当查询的索引含有唯一属性时,将next-key lock降级为record key
7. Gap锁设计的目的是为了阻止多个事务将记录插入到同一范围内,而这会导致幻读问题的产生
8. 有两种方式显式关闭gap锁:(除了外键约束和唯一性检查外,其余情况仅使用record lock) A. 将事务隔离级别设置为RC B. 将参数innodb_locks_unsafe_for_binlog设置为1
展开
1
MySQL打卡第十天## 事务
1. 什么是事务?事务是逻辑上的一组操作,要么都执行,要么都不执行。
2. 事务的特性: 原子性、一致性、隔离性、持久性。
3. 并发事务带来的问题: 脏读、修改丢失、不可重复读、幻读。
4. 不可重复读和幻读的区别:不可重复读的重点是修改,幻读的重点在于新增或者删除。
5. 事务的隔离级别: 读未提交、读已提交、可重复读、可串行化。
展开
张小强_于2020-12-04 11:32发布的图片
张小强_于2020-12-04 11:32发布的图片
张小强_于2020-12-04 11:32发布的图片
2
MySQL打卡第九天
今天学习了索引 :
1. 什么是索引?
2. 索引的优缺点?
3. 索引使用的主要事项。
4. MyISAM和InnoDB实现BTree索引方式的区别 。
6. 索引的类型: 主键索引(Primary Key)、二级索引(辅助索引)、唯一索引(Unique Key)、普通索引(Index)、全文索引(Full Text)、 联合索引(多列索引) 、覆盖索引 、 聚集索引 、非聚集索引。要理解这些概念不能记混了。
展开
张小强_于2020-12-03 12:10发布的图片
张小强_于2020-12-03 12:10发布的图片
张小强_于2020-12-03 12:10发布的图片
评论
MySQL 打开第八天

## 存储引擎

1. 一些常用的命令
2. MyISAM 和 InnoDB的区别
- 是否支持行级锁:MyISAM 只有表级锁(table-level locking),而InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁。
- 是否支持事务和崩溃后的安全恢复:MyISAM 强调的是性能,每次查询具有原子性,其执行速度比InnoDB类型更快,但是不提供事务支持。但是InnoDB提供事务支持,外部键等高级数据库功能。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。
- InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败。
- InnoDB是聚集索引, MyISAM是非聚集索引。
- InnoDB不保存表的具体行数,执行select count(\*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快(注意不能加有任何WHERE条件)。
- MyISAM表格可以被压缩后进行查询操作。
- InnoDB表必须有唯一索引(如主键)(用户没有指定的话会自己找/生产一个隐藏列Row_id来充当默认主键),而Myisam可以没有。
- 是否支持MVCC :仅 InnoDB 支持。

3. 怎么选择:
一般情况下我们选择 InnoDB 都是没有问题的,但是某些情况下你并不在乎可扩展能力和并发能力,也不需要事务支持,也不在乎崩溃后的安全恢复问题的话,选择MyISAM也是一个不错的选择。但是一般情况下,我们都是需要考虑到这些问题的。
展开
1
MySQL打卡第七天
今天学习了MySQL高性能优化规范:
- 数据库命令规范
- 数据库基本设计规范
- 数据库字段设计规范
- 索引设计规范
- 数据库 SQL 开发规范
- 数据库操作行为规范

具体参考下面的链接
展开
评论
下一页
个人成就
文章被阅读 278
掘力值 12
收藏集
3
关注标签
5
加入于