MySQL体系结构管理
原创
©著作权归作者所有:来自51CTO博客作者哈哈王呀的原创作品,请联系作者获取转载授权,否则将追究法律责任
MySQL客户端与服务端模型
MySQL客户端
mysql
mysqladmin
mysqldump
图形化
SQLyog
navicat
MySQL服务端的连接方式
# TCP/IP连接
mysql -uroot -p123 -h10.0.0.51
# Socket连接
mysql -uroot -p123 -S /app/mysql/tmp/mysql.Sock
# 问题:
##一下属于那种连接方式
mysql -uroot -p123 #socket
mysql -uroot -p123 -h127.0.0.1 #TCP
mysql -uroot -p123 -hlocalhost #socket
mysql -uroot -p123 -h10.0.0.51 -S /tmp/mysql.sock #TCP
mysql -uroot -p123 -S /tmp/mysql.sock -h10.0.0.51 #TCP
##如何验证是那种连接方式
不退出直接\s
# 总结
1)MySQL默认使用Socket连接,TCP连接需要建立三次握手,速度比socket慢
2)不是只有-h就一定是TCP连接
3)当-h和-S一起出现时,如果-h指定的是IP地址,那么一定是TCP连接
MySQ服务端构成
# 实例
由一个进程 + 多个线程 + 一个预分配的内存结构
mysqld程序的工作流程
# 连接层
-提供了两种连接方式
-TCP
-socket
-验证用户的合法性
-权限
-用户名
-密码
-验证黑白名单
-验证主机和端口的黑白名单
-提供了一个和SQL层建立连接的专用线程
# SQL层
-接受连接层传来的SQL语句
-验证语法
-验证语义
-DML
-DDL
-DQL
-DCL
-DTL
-解析器:解析后面的SQL语句
-优化器:提供一个比较优化的执行方案
-执行器:选择优化器提供的最优方案去执行
-提供一个与存储引擎层建立的线程
-接收存储引擎层结构化成表的数据
-如果有缓存,写缓存
-记录日志(binlog)
# 存储引擎层 (相当于mysql的文件系统)
-接收SQL层传来的SQL语句
-去磁盘取出SQL语句需要的数据
-结构化成表格的形式返回给SQL层
MySQL的结构
- 逻辑结构
数据库管理员的所有操作对象(MySQL的资源)
-库
-表
-真实数据
-元数据(描述数据属性的数据)
-列(字段)
-列名(字段名)
-数据类型
-约束
-是否为空
-默认值
-范围
-注释
-索引
-其他属性
-行数
-大小
-权限
-物理结构
最底层的物理数据(即使mkdir ku一个,去数据库show databases;也能看见这个库)
物理结构区别
# myisam
[root@db01 data]# ll mysql/user*
-rw-rw---- 1 mysql mysql 10684 Jul 18 22:50 mysql/user.frm (format ,表结构)
-rw-rw---- 1 mysql mysql 236 Jul 19 10:53 mysql/user.MYD
-rw-rw---- 1 mysql mysql 2048 Jul 19 10:54 mysql/user.MYI
# innodb
[root@db01 data]# ll yl/yl_test*
-rw-rw---- 1 mysql mysql 8556 Jul 20 09:26 yl/yl_test.frm
-rw-rw---- 1 mysql mysql 98304 Jul 20 09:26 yl/yl_test.ibd
MySQL文件系统的大小单位
Linux文件系统CentOS7: xfs
Linux文件系统CentOS6: ext4
段:一个段是由多个区组成的,(一张表,具体多大看表的内容有多少数据)
区:一个区是由多个页组成的,64个页为一个区,一个区=1024k=1M
页:最小单位,一页16k