一、写在前

知识学了就忘!不用就忘!我太健忘!特此记录!用于复习打卡!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. Java 动态代理原理图解 (附:2种实现方式详细对比)

    ​ 动态代理在 Java 中有着广泛的应用,例如:Spring AOP 面向切面编程,Hibernate 数据查询.以及 RPC Dubbo 远程调用等,都有非常多的实际应用@mikechen 目录 ...

  2. 详解pyautogui模块

    一.安装 pip install pyautogui 或者 pip install -i  https://pypi.tuna.tsinghua.edu.cn/simple pyautogui 二.全 ...

  3. Codeforces Global Round 23 D.Paths on the Tree(记忆化搜索)

    https://codeforces.ml/contest/1746/problem/D 题目大意:一棵n节点有根树,根节点为1,分别有两个数组 s[i] 顶点 i 的魅力值 c[i] 覆盖顶点 i ...

  4. perl使用print输入数据到文件

    #!usr/bin/perl use utf8; #引入utf8模块 脚本内的字符串使用utf8作为编码格式 binmode(STDOUT,":encoding(gbk)"); # ...

  5. Vue3 —— 组件练习题(附源码)

    一.定义一个vue分页组件,实现客户端分页功能 1.1.子组件A(页数按钮) <!-- 本组件用于遍历分页的页数按钮 --> <template lang=""& ...

  6. Json web token(JWT)攻防

    免责声明: 本文章仅供学习和研究使用,严禁使用该文章内容对互联网其他应用进行非法操作,若将其用于非法目的,所造成的后果由您自行承担,产生的一切风险与本文作者无关,如继续阅读该文章即表明您默认遵守该内容 ...

  7. Execute Crond Service on openEuler

    一.Execute Crond Service on openEuler 1 crond 概述 crond就是计划任务/定时任务 常见有闹钟.PC端定时关机 shutdown -s -t 200,定时 ...

  8. MISC中的图片修改宽高问题

    在做CTF中MISC分类题目时,很常见的一个问题就是修改图片正确的宽与高 (此篇笔记中的内容以ctfshow中MISC入门分类为切入点,感兴趣的同学可以一边做一边有不会的看看,仅供参考,我是菜鸡) 曾 ...

  9. Kubernetes-基于容器云构建devops平台

    1.基于kubernetes devops的整体方案 本文以Kubernetes为基础,为基于java语言研发团队提供一套完整的devops解决方案.在此方案中,开发人员基于eclipse集成开发环境 ...

  10. <一>C++ STL

    STL (standard template libaray - 标准模板库):是 C++ 标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架. 通俗来说:STL就 ...