一、写在前

知识学了就忘!不用就忘!我太健忘!特此记录!用于复习打卡!Mysql干就完事了!

二、来辣!

  1. MyISAM表把自增主键最大id记录到文件,重启也不会丢。InnoDB记录到内存,重启数据库和OPTIMIZE操作会丢。

  2. Heap表存在于内存,用于临时高速存储。BLOB和TEXT不允许,只能=<>>=<=;不支持自增,索引不可为NULL。

  3. InnoDB支持的4中隔离级别,及逐级之间的区别。

  4. BLOB和TEXT区别:对BLOB值进行排序和比较大小时区分大小写,对TEXT值不区分。

  5. 每个MyISAM表以三个文件存储在磁盘:表定义:“.frm”;数据文件:“.MYD”(MYDATA);索引文件:“.MYI”(MYINDEX)。

  6. MySQL表格类型:MyISAM、Heap、Merge、InnoDB、ISAM。5.5之前默认引擎是MyISAM,5.5开始是InnoDB。InnoDB是.frm;.ibd(索引和数据)

  7. MySQL优化DISTINCT:DISTNCT在所有列上转换为GROUP BY,并与ORDER BY子句结合使用。

  8. 单个索引最多使用16列创建。

  9. 允许6种触发器,增删改的前、后。before update

  10. 强制关机或断电可能会导致数据表损坏。

  11. MyISAM支持表锁;InnoDB支持表锁、行锁,默认行锁。还有一个页面锁,粒度在中间。

  12. MySQL查询缓存弊端:频繁更新的表,一更新就失效,不安逸。8.0版本被删了。

  13. MyISAM和InnoDB区别:InnoDB支持行锁、事务、多版本并发控制(MVVC)、外键、聚集索引;MyISAM支持全文索引,InnoDB部分版本不支持(可使用Sphinx插件)。

  14. 通过整库备份+binlog可以恢复半个月前日志,前提有备份和日志。

  15. 优化:尽量使用主键查询:聚簇索引上存储了全部数据,相比普通索引,减少了回表的消耗;MySQL5.6之后引入了索引下推优化,适当使用联合索引,减少回表消耗;若频繁查询某一列,考虑利用覆盖索引避免回表;最左原则:联合索引将高频字段放最左边。

  16. 数据库三范式:1属性不可再分(每列只有一个值);2每行可以被唯一区分(加主键);3不含其它表已包含了的非主键信息。

  17. limit offset由于扫描过多数据越往后查询越慢。存在有序id时:可配合当前页最后一条id进行查询,where id > #{id} limit #{limit}。

  18. 数据量越来越大导致查询慢:分库分表,根据时间拆分,id最好包含时间(如雪花算法),这样既能根据id直接获取,也能按照时间进行查询。

  19. char和varchar区别:char长度固定为声明长度,1~255,存储时用空格填充,检索时删除。

  20. 候选键和主键:超键(学号+姓名)(学号)。候选键(学号)。主键(学号)。外键(学号在另一张表做外键)。不含多余属性的超键=候选键。我从候选键中选一个作为主键。

  21. 数据增量大调优:允许数据冗余,避免join查询;字段类型和存储引擎合理,适当添加索引;主从读写分离;合理分表,减少单表数据量提高查询速度;添加缓存;不用select *;

  22. 锁的优化:读写分离;分段加锁;减少锁持有时间;多线程尽量按顺序获取锁;锁不能过度细化,避免频繁加锁和释放。

  23. 索引底层和优化:B+树,在所有叶子节点增加了指向下一个叶子节点的指针,所以InnoDB建议大部分表使用自增主键作为主索引。

  24. 索引失效:以%开头的like语句;OR语句前后没有同时使用索引;数据类型隐式转换(varchar不加单引号可能转成int型)

  25. 优化MySQL:语句与索引;数据库表结构;系统配置;硬件。

  26. 优化数据库:选取合适的字段属性,减少字段宽度,尽量设置成not null,省份、性别设置成ENUM;使用join代替子查询;使用联合(UNION)代替手动创建的临时表;事务处理;锁定表,优化事务处理;适用外键,优化锁定表;建立索引;优化查询语句。

  27. 索引是一种特殊文件,InnoDB的索引是表空间的一部分,包含对数据表里所有记录的引用指针。普通索引唯一任务是加快对数据的访问速度,允许重复值;唯一索引保证数据的唯一性,可以null;主键是特殊的唯一索引,不能为null,用PRIMARY KEY创建;联合索引。

  28. 防止SQL注入:用#不用$;过滤关键词update、insert、delete、select、*;SQL语句尽量不省略双引号和单引号;数据库表名和字段名命名技巧,防止被猜;开启配置文件中的 magic_quotes_gpc 和 magic_quotes_runtime 设置;执行 sql 语句时使用 addslashes 进行 sql 语句转换。

  29. 数据定义DDL: Create Table,Alter Table,Drop Table, Craete/Drop Index 等;数据操纵DML: Select ,insert,update,delete;数据控制DCL: grant,revoke ;数据查询DQL: select

  30. MVCC:并发版本控制:相当于为每个修改保存一个版本,版本与事务时间戳关联,读操作只读

    该事务开始前的数据库快照。它是通过数据库记录中的隐式字段Undo日志、Read Riew操作实现的。好处:并发读写数据库的时候,提高速度;实现读一致性,解决脏读、幻读、不可重复度问题;采用乐观锁或悲观锁操作解决写和写的从冲突。

三、写在后

只是简要知识点概括,看到就能回忆起相关内容为最妙~~直接评论打卡,开整!!!

Mysql--回顾提要的更多相关文章

  1. mysql 回顾小练习

    Student(id,sname,age,sex) 学生表 Course(id,cname,t_id) 课程表 SC(s_id,c_id,score) 成绩表 Teacher(id,Tname) 教师 ...

  2. MySQL回顾

    一. 对数据库的操作 1. 创建一个库 create database 库名 create database 库名 character set 编码 创建带有编码的 查看编码: 2. 删除一个库 dr ...

  3. MySQL 基础回顾

    mysql 回顾 数据库的设计必须满足三范式 1NF: 强调列的原子性,列不可拆分 eg: 一张表(联系人) 有(姓名,性别,电话)三列,但是现实中电话又可分为家庭电话和公司电话,这种表结构设计就不符 ...

  4. MySQL快速回顾:数据库和表操作

    前提要述:参考书籍<MySQL必知必会> 利用空闲时间快速回顾一些数据库基础. 4.1 连接 在最初安装MySQL,可能会要求你输入一个管理登录(通常为root)和一个口令(密码). 连接 ...

  5. Mysql学习笔记(八)由触发器回顾外键约束中的级联选项

    近些天都没有写博客.在学习mysql的知识,通过学习和练习,也熟悉了mysql的函数.触发器.视图和存储过程.并且在实际的开发过程中也应用了一小部分.效果还是十分理想的. 今天晚上在学习触发器模仿in ...

  6. 回顾:Linux环境 Mysql新建用户和数据库并授权

    回顾:Linux环境 Mysql新建用户和数据库并授权 一.新建用户 //登录Mysql @>mysql -u root -p @>密码 //创建用户 mysql> insert i ...

  7. MySQL多表查询回顾

    ----------------------siwuxie095 MySQL 多表查询回顾 以客户和联系人为例(一对多) 1.内连接 /*内连接写法一*/ select * from t_custom ...

  8. SQL快速入门 ( MySQL快速入门, MySQL参考, MySQL快速回顾 )

    SQL 先说点废话,很久没发文了,整理了下自己当时入门 SQL 的笔记,无论用于入门,回顾,参考查询,应该都是有一定价值的,可以按照目录各取所需.SQL数据库有很多,MySQL是一种,本文基本都是SQ ...

  9. MySQL快速回顾:更新和删除操作

    前提要述:参考书籍<MySQL必知必会> 6.1 更新数据 为了更新(修改)表中的数据,可使用UPDATE语句.可采用两种方式使用UPDATE: 更新表中特定的行: 更新表中所有的行. U ...

  10. 快速回顾MySQL:简单查询操作

    利用空闲时间花几分钟回顾一下 7.1 检索数据 为了查询出数据库表中的行(数据),使用SELECE语句. 格式: # 第一种 SELECT * FROM <table_name>; # 第 ...

随机推荐

  1. python基础之if条件控制语句

    前言 本文主要介绍控制流程中的if条件语句,包括if...:if...else...:if...elif...elif...else...:if...if...if...else...:if嵌套等.内 ...

  2. JDK中自带的JVM分析工具

    目录 一.业务背景 二.Jdk-Bin目录 三.命令行工具 1.jps命令 2.jinfo命令 3.jstat命令 4.jstack命令 5.jmap命令 四.可视化工具 1.jconsole 2.v ...

  3. 斑马打印机二维码标签制作(.prn文件)基础简单快速上手

    在工厂生产中,经常需要一线员工在电脑上输入订单号的情况.订单号往往很长,手输容易出错,并且浪费时间,所以常常使用扫码枪扫描二维码的方式输入订单号,本篇就是记录斑马打印机.prn标签模板的制作和使用. ...

  4. 快读《ASP.NET Core技术内幕与项目实战》WebApi3.1:WebApi最佳实践

    本节内容,涉及到6.1-6.6(P155-182),以WebApi说明为主.主要NuGet包:无 一.创建WebApi的最佳实践,综合了RPC和Restful两种风格的特点 1 //定义Person类 ...

  5. 【深入浅出 Yarn 架构与实现】2-1 Yarn 基础库概述

    了解 Yarn 基础库是后面阅读 Yarn 源码的基础,本节对 Yarn 基础库做总体的介绍.并对其中使用的第三方库 Protocol Buffers 和 Avro 是什么.怎么用做简要的介绍. 一. ...

  6. Websocket集群解决方案

    最近在项目中在做一个消息推送的功能,比如客户下单之后通知给给对应的客户发送系统通知,这种消息推送需要使用到全双工的websocket推送消息. 所谓的全双工表示客户端和服务端都能向对方发送消息.不使用 ...

  7. 1.nginx学习

    我们平时访问的网络网站就是WEB网络服务,允许用户通过浏览器访问互联网中的各种资源服务 WEB服务器会通过HTTP或者HTTPS的方式将请求内容传递给客户端 目前常见的WEB服务有IIS, Nginx ...

  8. 嵌入式-C语言基础:二维数组的地址写法

    二维数组a的有关指针: 表示形式                                含义                                                   ...

  9. 2022ICPC区域赛参后感悟

    第一次参加正式的大类赛事,在某种程度上挺激动的.我呢,可以说是刚步入竞赛一年,在此期间遇见了一些志同道合的朋友,最重要的是遇见了我的队友. 开始前,我幻想过我们小队可以超常发挥,拿取学校中第一个区域赛 ...

  10. python面试题常用语句

    一.比较与交换1.比较并输出大的 print(a if a>b else b) 2.交换两个元素 a,b = b,alist1[i],list[j]=list1[j],list[i] 二.排序 ...