数据库进阶

SQL语法执行过程:

客户端-->MySQL server-->存储引擎

索引定义:

索引是一种数据结构

索引包含一个表中列的值,并且这些值存储在一个数据结构中;

好处:提高数据检索效率;减少IO次数;降低CPU能耗;但不能有太多,5个内。

坏处:占用空间,降低更新表的速度,需要花时间研究建立最优秀的索引或者优化。

索引分类:

单列索引

  普通索引

  唯一索引:所有值唯一且可有null值;

  主键索引:不允许null值;

组合索引

全文索引

 

适合索引的场景:

经常查询经常排序可进行创建索引

 

explain:

模拟优化器执行SQL查询语句

分析查询语句或是表结构的性能瓶颈

使用:

explain +SQL语句

作用:

 

事务:

是访问病可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行。

特点:

A 原子性:事务不可分割

C 一致性:事务开始和结束 数据完整性没有被破坏

I 隔离性:防止多个事务并发执行产生错误

D 持久性:对数据修改是永久的

 

事务操作:

begin 开始一个事务

rollback 事务回滚

commit 事务提交

 

统计日志:

slow log 慢查询日志 超出预支的long_query_time阀值的SQL记录

general log:全局查询日志,所有SQL查询的记录

 

查看慢查询日志(默认关闭):

用来记录响应时间超过阀值的SQL语句的日志,可以结合explain进行分析为什么查询慢

查看日志开关:show variables like '%query%'

打开日志开关: set global slow_query_log='ON'

设置阀值:set long_query_time=0.01

执行SQL语句

查看日志内容

 

在表中查看日志:

修改日志存放方式:set global log_output='table';

查看表中内容:select * from mysql.slow_log;

 

查看全局查询日志

查看变量信息:show variables like '%general%';

打开日志开关:set global general_log='ON'

执行SQL语句

查看表中日志内容:select * from mysql.general_log;

 

posted @ 2022-04-18 17:50  lms21  阅读(35)  评论(0)    收藏  举报