MySQL概述与MySQL日志

为什么要使用数据库

通过不同的存储数据的方式,就能发现使用数据库比存储在内存中,数据可以长久保存,数据库比文件存储数据因为有了SQL语句,不管是查询还是管理数据都更加方便。

数据保存在文件 

数据存储在文件的优点是数据可以永久保存,但是缺点就是查询数据不方便,操作繁琐,并且速度还要比内存操作慢,有频繁的IO操作。

数据保存在内存 

数据存储在内存中,优点是存取速度快,但是缺点也很明显就是数据不能长久保存,且数据易丢失。

数据保存在数据库

数据存储在数据库中,优点是数据永久保存,使用SQL语句,查询方便效率高,管理数据方便。

什么是SQL

结构化查询语言统称为SQL,是一种数据库查询语言,它可以适用于大多数的数据库管理系统,主用于存取数据、查询、更新和管理关系数据库系统。

什么是MySQL

MySQL是一个关系型数据库(同样是关系型数据库的还用Oracle、SQL server等),由瑞典MySQLAB公司开发,属于Oracle旗下产品。在WEB应用方面,MySQL是最好的RBDMS(关系型数据库系统)之一,在Java企业级开发中,因为MySQL是开源的,因此方便进行扩展。

数据库三大范式是什么

第一范式:每个列都不可以再拆分。

第二范式在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。比如货物表中,有货物ID、货物名称、货物类型、货物备注,货物名称是完全依赖于货物ID的,但货物备注依赖于货物类型,因此就不能是第二范式。

第三范式:在第二范式的基础上,非主键列只能依赖于主键,不依赖于其他非主键。其实就是不能存在传递依赖主键并不能完全决定一个非主键属性。

MySQL有关权限的表都有哪几个

MySQL服务器通过权限表来控制用户对于数据库的访问,权限表存放在MySQL数据库中,通过mysql_install_db脚本初始化。这些权限表分别user,db,table_priv,columns_priv和host。

user权限表:记录允许连接到服务器的用户账号信息,里面的权限是全局级的

db权限表:记录各个账号在各个数据库上的操作权限。

table_priv权限表:记录数据表级的操作权限。

columns_priv权限表:记录数据列级的操作权限。 

host权限表:配合db权限表对给定主机上数据库级操作权限作更细致的控制。这个权限表不受GRANT和REVOKE语句的影响。

MySQL日志

MySQL二进制日志 binlog

二进制日志(binlog)记录了所有的数据定义语言语句(DDL)和数据操纵语言语句(DML),但不包括数据查询(select、show)。MySQL的二进制日志是事物安全型的。

作用:灾难时数据库恢复;MySQL的主从复制。在MySQL8中,默认二进制日志是开启着的

show variables like '%log_bin%'

//通过该语句查找相关参数

binlog日志还包括二进制日志文件(后缀名为.00000*  该文件后缀随着每个二进制日志文件放满后,开启新的二进制日志文件,后缀名自增1)用于记录所有DDL和DML的事件语句二进制日志索引文件(后缀是.index)用于记录所有二进制文件。

MySQL的binlog有几种录入格式?分别有什么区别?

MySQL的binlog有三种录入格式,statement、row和mixed。

statement

是基于SQL语句的日志记录,记录的是SQL语句,对数据进行修改的SQL都会记录在日志文件中。比如对数据进行update的修改操作,statement是记录update这个SQL语句。

row

基于行的日志记录,记录的是每一行的数据变更(数据库默认),用上述update的例子,row是记录进行update这个操作前后的数据记录。

mixed

混合了statement和row两种格式,默认采用statement,在某些特殊情况下会自动切换为row进行记录。

想要查看二进制日志文件可以使用以下语句:

mysqlbinlog [参数选项] logfilename

参数选项参考以下内容:

 日志删除

对于比较繁忙的业务系统,每天生成的binlog数据巨大,如果长时间不清楚,将会占用大量磁盘空间。

//删除全部binlog日志,删除之后,日志编号,将从binlog.000001重新开始

reset master

//删除******编号之前的所有日志

purge master logs to 'binlog.******'

//删除日志为“yyyy-mm-dd hh24:mi:ss”之前产生的所有日志

purge master logs before ‘yyyy-mm-dd hh24:mi:ss’

在MySQL配置文件中可以配置二进制日志的过期时间,超过时间的二进制日志文件会被自动删除。

show variables like '%binlog_expire_logs_seconds%';

查询日志

查询日志中记录了客户端所有的操作语句,也就是包括所有DDL语句,而二进制日志是不会记录查询语句日志的。在默认的情况下,查询日志是不开启的,需要对MySQL配置文件/etc/my.cnf 进行以下配置:

#该选项用来开启查询日志,可选值: 0或者1 ; 0代表关闭,1 代表开启

general log=1

#设置日志的文件名,如果没有指定, 默认的文件名为host name.log

general log_ file=mysql query.log

慢查询

慢查询日志记录了所有执行时间超过long_query_time设置值并且扫描记录数不小于min_examined_row_limit的所有的SQL语句的日志,默认未开启。long_query_time默认为10s,最小为0,精度可以到微秒。   慢查询日志存放在localhost_slow.log中

#慢查询日志

slow_query_log=1

#执行时间参数

long_query_time=2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值