SQL

AS-->取别名

CONCAT()-->连接两个字段

TRIM()-->去除首尾空格

AVG()-->会忽略null行

COUNT()

MAX()

MIN()

SUM()

DISTINCT

LIMIT

BETWEEN

IN

NOT

GROUP BY:出现在WHERE之后HAVING之前

ORDER BY

WHERE:过滤行

HAVING:过滤分组

子查询:子查询中只能返回一个字段的数据

连接:INNER JOIN     LEFT JOIN      RIGHT JOIN      OUTER JOIN

组合查询:UNION(默认去除相同行)  UNION ALL(保留相同行)

视图:虚拟的表,本身不包含数据

存储过程:对一系列SQL操作的批处理      in  out  inout

游标:在存储过程中使用游标可以对一个结果集进行移动遍历

触发器:触发器会在某个表执行以下语句时而自动执行-->DELETE(OLD)、INSERT、UPDATE(NEW、OLD)

事务管理:

字符集:

权限管理:grant

 

索引:B+树-->与红黑树对比:更少的查找次数;利用磁盘预读特性

MySQL索引:索引是在存储引擎层实现的,不同存储引擎具有不同的索引类型和实现

B+树:

哈希索引:

全文索引:MyISAM支持、InnoDB;用于查找文本中的关键词,而不是直接比较是否相等

空间数据索引(R-Tree):MyISAM引擎支持,用于地理数据存储

 

索引优化:

独立的列-->在进行查询时,索引列不能是表达式的一部分,也不能是函数的参数,否则无法使用索引

多列索引-->

索引列的顺序-->让选择性最强的索引列放在前面

前缀索引-->BLOB、TEXT、VARCHAR,只索引开始的部分字符

覆盖索引-->

 

执行计划Explain:select_type、key、rows

优化数据访问:减少请求的数据量;减少服务器端扫描的行数

重构查询方式:切分大查询-->一个大查询如果一次性执行的话,可能一次锁住很多数据、占满整个事务日志、耗尽系统资源、阻塞很多小的但重要的查询。

 

存储引擎:

InnoDB

MyISAM:并发插入、压缩表、空间数据索引

 

数据类型:

整型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT

浮点数:FLOAT、DOUBLE、DECIMAL

字符串:CHAR、VARCHAR

时间和日期:DATETIME、TIMESTAMP

 

切分:水平切分,将同一个表中的记录拆分到多个结构相同的表中

垂直切分

 

主从复制:binlog线程、I/O线程和SQL线程

binlog线程:负责将主服务器上的数据更改写入二进制日志中

I/O线程:负责从主服务器上读取二进制日志,并写入服务器的中继日志

SQL线程:负责读取中继日志,解析出主服务器已经执行的数据更改并在服务器中重放

 

读写分离:

主服务器处理写操作以及实时性要求比较高的读操作,而从服务器处理读操作。

读写分离能提高性能的原因在于:

  • 主从服务器负责各自的读和写,极大程度缓解了锁的争用;
  • 从服务器可以使用 MyISAM,提升查询性能以及节约系统开销;
  • 增加冗余,提高可用性。

读写分离常用代理方式来实现,代理服务器接收应用层传来的读写请求,然后决定转发到哪个服务器。

 

posted @ 2020-04-23 15:21  LinBupt  阅读(80)  评论(0)    收藏  举报