是什么?
是最流行的关系型数据库管理系统
关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据
mysql的优点:
1、性能卓越服务稳定,很少出现异常宕机
2、开放源代码且无版本制约,自主性强、使用成本低
3、历史悠久、社区及用户非常活跃,遇到问题可以很多获取帮助
4、软件体积小,安装使用简单,易于维护,安装及维护成本低
5、支持多种操作系统,提供多种API接口,支持多种开发语言
6、mysql是一个真正多用户、多线程SQL数据库服务器,它能够快速、有效和安全的处理大量数据
mysql命名机制
如:mysql-5.7.20
第一个数字5是主版本号,用于描述文件的格式,所有版本5的发行版都有相同的文件夹格式
第2个数字7 是发行级别,主版本号和发行级别组合在一起构成发行序列号
第3个数字20 是此发行系列的版本号,随每次新发行的版本递增
mysql使用场景
1、Web网站系统:因为mysql的数据库安装配置简单,使用过程中的维护较于大型商业数据库管理系统没有那么复杂,性能出色。另一个重要原因是开放源代码。可以免费使用
2、日志记录系统:mysql数据库的插入和查询性能非常高效,如果设计的好可以达到很高的并发性能,所以对于需要大量的插入和查询日志记录的系统来说,mysql比较适用
3、嵌入式系统:嵌入式环境对软件系统最大的限制是硬件资源有限,在嵌入式环境下运行的软件系统必须是轻量级低消耗的软件,mysql是非常合适的数据库系统,并且mysql有专门针对于嵌入式环境的版本
......
mysql日志
四种mysql日志
1、二进制日志:以二进制的形式记录了数据库中的操作,但不记录不改变数据库的sql语句(如select、show),二进制日志主要用户数据库恢复和主从复制
2、错误日志:记录mysql的启动,关闭和运行错误等信息,默认开启且无法停止
3、通用查询日志:记录用户登录和记录查询的信息
4:慢查询日志:记录查询时间超过指定时间(默认10秒)的操作默认情况下,只开启了错误日志功能,其它的日志功能需要管理员设置
#在navicat中执行
show global variables like '%log%'; #查询日志
#二进制日志
show global variables like "%log_bin%"; #查看二进制日志
show binary logs #查看二进制文件列表
show master status #查看正在写入的binlog文件
#错误日志
show variables like 'log_error' #查看错误日志:会显示出来错误日志地址
#通用查询日志
show variables like 'general_log_file' #查看通用查询日志
#慢日志、
show global variables like 'long%'; #慢日志超时时间查询
Mysql性能优化
为什么要进行性能优化?
提高mysql数据库整体的性能,需要合理的数据库结构设计和参数调整来提高用户操作响应的速度,同时还要尽可能节省系统资源,方便系统可以提供更大负荷的服务
性能参数:
查询mysql的性能参数
SHOW status;
例:输入“show status”指令查询到的所有性能参数
常用的参数如下:
SHOW STATUS LIKE 'Connections'; #连接mysql服务器的次数
SHOW STATUS LIKE 'Uptime'; #服务器上线时间
SHOW STATUS LIKE 'Slow_queries'; #慢查询的次数:超过指定时间的SQL语句查询称为“慢查询”。
SHOW STATUS LIKE 'Com_select'; #查询操作的次数
SHOW STATUS LIKE 'Com_insert'; #查询插入操作的次数,对于批量插入操作,只累加一次
SHOW STATUS LIKE 'Com_update'; #更新操作的次数
SHOW STATUS LIKE 'Com_delete'; #删除操作的次数
EXPLAIN和DESCRIBE(查询分析器)
EXPLAIN语句的作用:分析sql语句的性能
参考链接:
http://c.biancheng.net/view/7873.html
https://www.jianshu.com/p/8fab76bbf448
优化插入数据速度两种方式
1、禁用索引
对非空表插入数据时,mysql会根据表的索引对插入的记录进行排序,插入大量数据时,会降低插入数据的速度,为了解决这种情况,可以在插入数据之前禁用索引,数据插入完毕后开启索引
//禁用索引语句
ALTER TABLE "表名" DISABLE KEYS;
//重新开启索引的语句
ALTER TABLE "表名" ENABLE KEYS;
2、禁用唯一性检查
插入数据时,mysql会对插入的数据进行唯一性检查,这种唯一性检验会降低插入数据的速度,为了降低这种情况对查询速度的影响,可以在插入数据前禁用唯一性的检查,等插入数据完毕后开启
//禁用唯一性检查语句
SET UNIQUE_CHECKS=0;
//开启唯一性检查语句
SET UNIQUE_CHECKS=1;