• ADADADADAD

    mysql体系结构[ mysql数据库 ]

    mysql数据库 时间:2024-12-03 12:14:30

    作者:文/会员上传

    简介:

    一.MySQL分层架构
    1.链接层
    处理网络的链接,链接的网络认证。


    - 查看链接权限
    点击(此处)折叠或打开mysql> select user,host from mysql.user\G;ERROR 2006 (HY000): MySQ

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    一.MySQL分层架构
    1.链接层
    处理网络的链接,链接的网络认证。


    - 查看链接权限

    点击(此处)折叠或打开

      mysql> select user,host from mysql.user\G;ERROR 2006 (HY000): MySQL server has gone awayNo connection. Trying to reconnect...Connection id:3Current database: *** NONE ****************************** 1. row ***************************user: mysql.sessionhost: localhost*************************** 2. row ***************************user: mysql.syshost: localhost*************************** 3. row ***************************user: roothost: localhost3 rows in set (0.00 sec)ERROR:No query specifiedmysql> 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 会话
    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读写性能测试




    mysql体系结构.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysql体系结构