mysql工作模式_Mysql详解

一、简介

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值