温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

mysql体系结构

发布时间:2020-08-10 06:32:01 来源:ITPUB博客 阅读:177 作者:wwjfeng 栏目:MySQL数据库
一.MySQL分层架构
1.链接层
处理网络的链接,链接的网络认证。
mysql体系结构

- 查看链接权限

点击(此处)折叠或打开

  1. mysql> select user,host from mysql.user\G;
  2. ERROR 2006 (HY000): MySQL server has gone away
  3. No connection. Trying to reconnect...
  4. Connection id: 3
  5. Current database: *** NONE ***
  6. *************************** 1. row ***************************
  7. user: mysql.session
  8. host: localhost
  9. *************************** 2. row ***************************
  10. user: mysql.sys
  11. host: localhost
  12. *************************** 3. row ***************************
  13. user: root
  14. host: localhost
  15. 3 rows in set (0.00 sec)
  16. ERROR:
  17. No query specified
  18. mysql> grant all on *.* to root@'%' identified by 'root';
  19. Query OK, 0 rows affected, 1 warning (0.00 sec)
  20. mysql> flush privilege;
- 查看连接

点击(此处)折叠或打开

  1. mysql> show processlist;
  2. +----+------+-----------+------+---------+------+----------+------------------+
  3. | Id | User | Host | db | Command | Time | State | Info |
  4. +----+------+-----------+------+---------+------+----------+------------------+
  5. | 3 | root | localhost | NULL | Query | 0 | starting | show processlist |
  6. +----+------+-----------+------+---------+------+----------+------------------+
- kill 会话
kill 3;
kill query 4;  杀掉会话正在执行的SQL,而不关闭会话。

- 连接池
(1).如果在程序中,频繁的创建和销毁mysql和客户端连接,开销很严重。
(2).为了减少相关的连接创建的开销,在应用层部署一个连接池。
(3).会保持一定的连接在连接池中,如果应用想请求连接的话,不再需要向mysql请求,而是直接向连接池请求链接,减少了应用和mysqld频繁创建链接的开销。

- 线程池
(1).每个连接过来,就分配一个线程对该链接提供服务,链接撤销后就撤销该线程,在连接的频繁创建与销毁过程中,会需要消耗一定的系统资源。
(2).为了避免这个情况的发生线程池内部的线程是可以共用的,如果连接销毁后,线程是不会被销毁的,可以继续为下一个连接提供服务。
(3).社区版没有线程池的特性

mysql体系结构
2. SQL层
SQL的查询解析,分析,优化,缓存以及所有的内置函数,所有存储引擎的功能都在这一层实现,比如存储过程。
mysql体系结构
mysql体系结构

- 查询缓存
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本身有一些局限性

mysql体系结构
mysql5.5版本之前默认的存储引擎是MyISAM
查看存储引擎
show plugins;
建表的时候要选择存储引擎
create table t1 (id int) ENGINE=myisam;
show create table t1\G;

- Innodb MyISAM区别
mysql体系结构

- innodb表结构设计
一对一
一对多
多对多

不推荐使用外键,因为大批量插入数据时,每次插入都要检查外键约束,造成性能大量消耗。 虽然不推荐,但是依赖关系依然存在。


- innodb和myisam读写性能测试
mysql体系结构

mysql体系结构

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI