当前位置: 移动技术网 > IT编程>数据库>Mysql > MySQL 实用基础

MySQL 实用基础

2020年07月14日  | 移动技术网IT编程  | 我要评论

第一问:为什么要使用固定字段? 

  1. 逻辑删除字段,行业共识,数据库不允许物理删除数据,哪怕是错误数据,错误数据也是有一定价值的。然后可快速恢复,就是数据库的手动后悔药。
  2. 创建人,对于数据的掌控,很重要,谁创建的,一般使用在后台管理中较多。
  3. 创建时间,对于数据的掌控 数据何时进入数据库 很重要。
  4. 更新时间,对于数据的掌控 数据何时更 也很重要。
  5. 备注字段,数据库一般都会涉及到手动修改,或者间接关联,都可使用这个字段标注。

第二问:为什么建议使用 NOT NULL 限制列属性?

  1. 读取数据的时候, 会带来大量的数据非空检查, 否则抛出NullPointException。
  2. NULL值列和其他列进行操作可能引发错误,或者意外,如统计不正确,对NULL值得判断无法使用到索引,也不能直接比较。
  3. NULL值到非NULL的更新无法做到原地更新,更容易发生索引分裂,从而影响性能。
  4. Mysql难以优化引用可空列查询,它会使索引、索引统计和值更加复杂。可空列需要更多的存储空间,还需要mysql内部进行特殊处理。可空列被索引后,每条记录都需要一个额外的字节,还能导致MYisam 中固定大小的索引变成可变大小的索引 --出自《高性能Mysql》

第三问:为什么select,update 语句的 where后的条件应该创建二级索引?

  1. 查询快。
  2. mysql行锁是加在索引上的,使用索引 可增加并发性能,减少锁争用情况。
  3. 尽量使用主键去做更新,查询;在使用二级索引更新时候,可能出现next-key 锁,造成锁住多余的行( 在8.0.19版本中 已修复)

第四问:select from join where group by order by limit mysql语法执行顺序?

  1. from
  2. join 不要关联太多
  3. where 不要在 = 号左边做表达式计算,不要使用!=,
  4. select
  5. group 性能开销大头,可能涉及文件系统排序,创建临时表
  6. order 性能开销大头,可能涉及文件系统排序,涉及到创建时间排序,可考虑使用id代替,非常不建议对非驱动表字段进行排序
  7. limit 请多用limit

第五问:什么是一级索引,什么是二级索引?

  1. INNODB:聚簇索引,一级索引:主键索引,索引上存储数据;二级索引:非主键索引,索引上存储主键。
  2. MYISAM:非聚簇索引,索引上存储数据指针

MySQL 索引结构(MyISAM的有错误,应该是索引上存储指针)


MySQL千万级的索引树,高度在3-5 层

第六问:MYSQL锁机制

  1. 乐观锁: 事务执行到哪就申请哪的资源的锁
  2. 悲观锁: 事务开始先申请锁住需要的全部资源
  3. 全局事务读锁: MYSQL最强锁 flush table with read lock
  4. 表锁:
  5. 页锁:磁盘与内存数据交互时候使用到
  6. 行锁:
  7. 元数据锁:DDL DML 产生
  8. 间隙所: 锁住俩条记录之间的间隙
  9. 记录锁: 行锁
  10. next-key:间隙所+记录锁
  11. 备份锁: 8.0 备份时候使用
  12. S锁 共享锁,加锁读的情况。 (意向锁作用,A事务正在加锁修改a表的一行数据,B事务现在想修改整个a表的数据,如果没有意向锁,则,B的事务需要判断表中的每一行是否已被行锁锁住,效率奇差,而有了意向锁,只需要判断表是否存在意向锁,便可,解决了行锁,表锁同时存在的时候的锁的效率问题)
  13. X锁 排它锁
  14. IS锁 属于表锁,属于共享锁
  15. IX锁 属于表锁,属于共享锁

死锁:俩个事务相互锁住了对方需要的锁资源。

  1. 避免死锁的方式: 越是轻量的事务,占有越少的锁资源,这样发生死锁的几率就越小,不同事务中,表的更新顺序应当一致。尽量按主键更新数据。mysql有死锁检测线程,会放弃影响小的事务。

第七问:MYSQL学习推荐几个公众号

  1. 老叶茶馆
  2. MySQL技术
  3. 数据库SQL
  4. 数据库随笔
  5. 爱可生开源社区
  6. pinCAP
  7. 阿里巴巴数据库技术
  8. 腾讯数据库技术
  9. 腾讯云数据库
  10. 巨衫数据库

本文地址:https://blog.csdn.net/qq_32682305/article/details/107310388

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网