一、简介
Mysql是一个开放源代码的关系性数据库管理系统,数据库指的是以一定的方式存在一起、能为多个用户共享、具有尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合。
特性:实现数据共享
减少数据的冗余度
数据实现集中控制
数据的一致性
故障恢复
端口:tcp 3306
二、Mysql架构
第一层:客户端和连接服务,主要处理连接处理、授权认证及相关安全方案
第二层:大多数核心服务功能,完成sql的分析和优化,优化查表的顺序,是否利用索引
第三层:存储引擎,负责Mysql中数据的存储和提取
第四层:将数据存储在文件系统,与存储引擎进行交互
三、部分存储引擎介绍MyISAM:默认存储引擎,诞生即存在,查询速度较InnoDB更快,不支持事务、行级锁、页级锁
InnoDB:支持事物、行级锁以及外键约束等功能,相对于 MyISAM 更慢
MEMORY:运行在内存中、使用 hash 索引,数据存取速度非常快。但是数据不能持久化,适用于缓存
四、sql语句及其与组件的关系DML:数据操作语言,操作数据库中数据的命令select、insert、update、delete
DDL:数据库描述语言,建立数据库、定义数据关系create、drop
DCL:数据库控制语言,控制数据库组件的权限grant
存储管理器:通过 数据描述语言( DDL )来创建表的结构,在通过 数据操作语言( DML ) 来保存 SQL 语句产生的数据的数据库组件
查询管理器:接收用户的查询请求、理解查询请求、并将请求提交给存储管理器的数据库组件
五、Mysql工作模式采用单进程多线程的工作模式,每个线程维持一个连接
守护线程:MySQL 不需要跟用户进行交互
应用线程:MySQL 需要跟用户进行交互
六、主从同步原理从数据库定时启动sql线程和I/O线程,主数据库开启binlog-dump-thead 线程
当一段时间后主数据库数据发生变化,主数据库将会把修改写入二进制日志
从数据库通过I/O线程连接到主数据库,接受binlog线程传输过来的数据
从数据库接受到数据后,通过sql线程将数据写入数据库
七、Mysql的备份备份方式块级别备份,磁盘对拷
利用mysqldump进行备份
利用二进制日志进行备份
备份环境冷备:服务器停止运行时进行备份
热备:服务器运行时进行备份
温备:服务器运行,但备份的表会自动锁定时进行备份。比如mysqlhotcopy(只适用于MyISAM)
八、SQL语句基础增增加数据库、数据表create table 表名---创建数据表
create database 数据库---创建数据库
插入数据insert into 表名 values (数据内容)---向表内插入数据
insert into 表名 字段名 select 字段名 from 表名2
删删除表drop table 表名---删除表,包括表结构
delete table 表名 ---删除表,只删除表内容
delete from 表名 where 字段=数值---删除表中字段等于该数值的记录
删除库drop database 库名
删除普通用户delete from user where user ='test'and host ='localhost' flush privileges
改update 表名 set 字段1=数值1 where 字段2=数值2;---更新字段2等于数值2的所有字段1等于数值1---更改表内数据
alter table 表1 rename 表2---更改表名
查show tables;---查看数据表
show databases;---查看数据库
describe 表名---查看表结构
select * from 表名 ---查看表内容
赋权grant all on *.* to 'zhangsan'@'%';---给予用户权限
grant all on *.* to 'lisi'@'%' identbified by '123';其他权限包含:create、delete、drop、select、all、grant、salve
revoke create on test .* from 'lisi'@'%'---取消lisi远程创建的权限
修改密码set password =password ('123456')---给普通用户修改密码
在my.cf文件处添加skip-grant-table,使mysql跳过密码进行登录 update mysql.user set password=password ("123") where user ='root';
进阶sql语句的去重select distinct 字段名 from 表名
select 字段名 from 表名 groub by 字段名
row_number() over
避免数据重复的方式添加索引
设置主键
九、Mysql主从同步慢的原因原因从库太多,导致导致复制延迟
慢sql语句太多
从库性能较于主库性能更差
主从复制单线程,主库并发很大的时候
主数据库压力太大时
解决架构方面读写分离
增减redis减少mysql的压力
硬件方面采用san网络
提升硬件性能
十、MySQL的慢日志作用:开启慢日志可以让maysql查询超过指定时间的语句,通过定位分析性能瓶颈才能更好的优化数据库的性能
设置进去mysql进行设置set global slow_query_log='ON'; ---全局变量设为ON
set global slow_query_log_file='/usr/local/mysql/data/slow.log';---设置慢日志存放位置
set global long_query_time=1;---查询超过1秒就记录
修改配置文件在my.cf文件中添加 [mysqld]
slow_query_log = ON
slow_query_log_file = /usr/local/mysql/data/slow.log
long_query_time = 1