mysql体系结构
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,一.MySQL分层架构1.链接层处理网络的链接,链接的网络认证。- 查看链接权限点击(此处)折叠或打开mysql> select user,host from mysql.user\G;ERROR 2
千家信息网最后更新 2025年02月01日mysql体系结构一.MySQL分层架构
1.链接层
处理网络的链接,链接的网络认证。
- 查看链接权限
kill 3;
kill query 4; 杀掉会话正在执行的SQL,而不关闭会话。
- 连接池
(1).如果在程序中,频繁的创建和销毁mysql和客户端连接,开销很严重。
(2).为了减少相关的连接创建的开销,在应用层部署一个连接池。
(3).会保持一定的连接在连接池中,如果应用想请求连接的话,不再需要向mysql请求,而是直接向连接池请求链接,减少了应用和mysqld频繁创建链接的开销。
- 线程池
(1).每个连接过来,就分配一个线程对该链接提供服务,链接撤销后就撤销该线程,在连接的频繁创建与销毁过程中,会需要消耗一定的系统资源。
(2).为了避免这个情况的发生线程池内部的线程是可以共用的,如果连接销毁后,线程是不会被销毁的,可以继续为下一个连接提供服务。
(3).社区版没有线程池的特性
2. SQL层
SQL的查询解析,分析,优化,缓存以及所有的内置函数,所有存储引擎的功能都在这一层实现,比如存储过程。
- 查询缓存
query_cache_size 1048576
query_cache_type OFF
(1).如果mysql之前执行的sql,直接从查询缓存返回结果
(2).局限性比较大,任何查询结果有变更,都需要进行更新,还持有全局锁,锁力度很重,效率很低。
使用场景: 如果查询的SQL语句和结果集比较固定,可以考虑开启查询缓存。
- 修改系统参数
show variables like 'log%';
(1).只读参数:关闭数据库后进行修改,重启数据库后生效,不能在线修改
mysql> set global query_cache_type=on;
ERROR 1651 (HY000): Query cache is disabled; restart the server with query_cache_type=1 to enable it
(2).在线参数:可以直接开库修改,不用重启数据库即可生效
(3).全局参数:修改后,所有新会话,会生效
show global variable;
SET GLOBAL var_name = value;
(4).会话参数:只在当前会话生效
show session variable;
SET SESSION var_name = value;
- SQL执行过程
(1).SQL解析(在数据库内部将sql文本转换为sql解析树)
(2).SQL优化改写
(3).SQL的执行计划确立
(4).SQL执行
(5).binlog
3.存储引擎层
MySQL的存储引擎在存储引擎层,负责存储数据。正是因为分层的存在,导致MySQL本身有一些局限性
mysql5.5版本之前默认的存储引擎是MyISAM
查看存储引擎
show plugins;
建表的时候要选择存储引擎
create table t1 (id int) ENGINE=myisam;
show create table t1\G;
- Innodb MyISAM区别
- innodb表结构设计
一对一
一对多
多对多
不推荐使用外键,因为大批量插入数据时,每次插入都要检查外键约束,造成性能大量消耗。 虽然不推荐,但是依赖关系依然存在。
- innodb和myisam读写性能测试
1.链接层
处理网络的链接,链接的网络认证。
- 查看链接权限
点击(此处)折叠或打开
- mysql> select user,host from mysql.user\G;
- ERROR 2006 (HY000): MySQL server has gone away
- No connection. Trying to reconnect...
- Connection id: 3
- Current database: *** NONE ***
- *************************** 1. row ***************************
- user: mysql.session
- host: localhost
- *************************** 2. row ***************************
- user: mysql.sys
- host: localhost
- *************************** 3. row ***************************
- user: root
- host: localhost
- 3 rows in set (0.00 sec)
- ERROR:
- No query specified
- mysql> grant all on *.* to root@'%' identified by 'root';
- Query OK, 0 rows affected, 1 warning (0.00 sec)
- mysql> flush privilege;
点击(此处)折叠或打开
- mysql> show processlist;
- +----+------+-----------+------+---------+------+----------+------------------+
- | Id | User | Host | db | Command | Time | State | Info |
- +----+------+-----------+------+---------+------+----------+------------------+
- | 3 | root | localhost | NULL | Query | 0 | starting | show processlist |
- +----+------+-----------+------+---------+------+----------+------------------+
kill 3;
kill query 4; 杀掉会话正在执行的SQL,而不关闭会话。
- 连接池
(1).如果在程序中,频繁的创建和销毁mysql和客户端连接,开销很严重。
(2).为了减少相关的连接创建的开销,在应用层部署一个连接池。
(3).会保持一定的连接在连接池中,如果应用想请求连接的话,不再需要向mysql请求,而是直接向连接池请求链接,减少了应用和mysqld频繁创建链接的开销。
- 线程池
(1).每个连接过来,就分配一个线程对该链接提供服务,链接撤销后就撤销该线程,在连接的频繁创建与销毁过程中,会需要消耗一定的系统资源。
(2).为了避免这个情况的发生线程池内部的线程是可以共用的,如果连接销毁后,线程是不会被销毁的,可以继续为下一个连接提供服务。
(3).社区版没有线程池的特性
2. SQL层
SQL的查询解析,分析,优化,缓存以及所有的内置函数,所有存储引擎的功能都在这一层实现,比如存储过程。
- 查询缓存
query_cache_size 1048576
query_cache_type OFF
(1).如果mysql之前执行的sql,直接从查询缓存返回结果
(2).局限性比较大,任何查询结果有变更,都需要进行更新,还持有全局锁,锁力度很重,效率很低。
使用场景: 如果查询的SQL语句和结果集比较固定,可以考虑开启查询缓存。
- 修改系统参数
show variables like 'log%';
(1).只读参数:关闭数据库后进行修改,重启数据库后生效,不能在线修改
mysql> set global query_cache_type=on;
ERROR 1651 (HY000): Query cache is disabled; restart the server with query_cache_type=1 to enable it
(2).在线参数:可以直接开库修改,不用重启数据库即可生效
(3).全局参数:修改后,所有新会话,会生效
show global variable;
SET GLOBAL var_name = value;
(4).会话参数:只在当前会话生效
show session variable;
SET SESSION var_name = value;
- SQL执行过程
(1).SQL解析(在数据库内部将sql文本转换为sql解析树)
(2).SQL优化改写
(3).SQL的执行计划确立
(4).SQL执行
(5).binlog
3.存储引擎层
MySQL的存储引擎在存储引擎层,负责存储数据。正是因为分层的存在,导致MySQL本身有一些局限性
mysql5.5版本之前默认的存储引擎是MyISAM
查看存储引擎
show plugins;
建表的时候要选择存储引擎
create table t1 (id int) ENGINE=myisam;
show create table t1\G;
- Innodb MyISAM区别
- innodb表结构设计
一对一
一对多
多对多
不推荐使用外键,因为大批量插入数据时,每次插入都要检查外键约束,造成性能大量消耗。 虽然不推荐,但是依赖关系依然存在。
- innodb和myisam读写性能测试
存储
链接
引擎
线程
数据
查询
参数
缓存
频繁
开销
数据库
结果
过程
应用
全局
局限性
性能
系统
网络
在线
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全测评师初级考试难吗
加强网络安全管理的决议草案
教育青少年网络安全书籍推荐
遵义网络安全资讯发展前景好
技术收入包括软件开发
万方医学数据库英文翻译
网络安全措施目标系统的弱点
重庆商城软件开发放心省心
斩龙服务器
华为香港服务器
郑州五阳软件开发公司怎么样
服务器运行环境是什么
英灵神殿服务器怎么打开控制台
长沙有电脑软件开发
收银机服务器管理器
网络安全是防线也是底线
中山网络安全哪家强
天亮网络技术有限公司
db2数据库字段值加前缀
app软件开发一个多少钱
金铲铲之战哪个服务器主播多
数据库成绩级别
seer数据库软件
关于网络安全案件的通报
湛江智能软件开发
上海银联网络技术中心收费
服务软件开发公司
张店hr人力资源软件开发公司
移动宽带玩绝地求生服务器繁忙
数据库怎么进行单表查询吗