您的位置:新葡亰496net > 网络数据库 > 新葡亰496netMySQL的布局介绍,配置文件及逻辑结构

新葡亰496netMySQL的布局介绍,配置文件及逻辑结构

发布时间:2019-11-30 06:18编辑:网络数据库浏览(66)

    目录

    Mysql逻辑架构介绍总体概览

    配置文件:

    1、MySQL 简介

    和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离 。 这种架构可以根据业务的需求和实际需要选择合适的存储引擎。

    1. linux:/etc/my.cnf              默认配置文件:/usr/share/mysql/my-default.cnf
    2. windows:my.ini
    概述
    • MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。
    • MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

    • Mysql是开源的,所以你不需要支付额外的费用。

    • Mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
    • MySQL使用标准的SQL数据语言形式。
    • Mysql可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C 、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
    • Mysql对PHP有很好的支持,PHP是目前最流行的Web开发语言。
    • MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
    • Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。

    controller层:Connectors:连接层,c 、java等连接mysql

     

    高级MySQL涉及到知识
    • mysql内核
    • sql优化攻城狮
    • mysql服务器的优化
    • 各种参数常量设定
    • 查询语句优化
    • 主从复制
    • 软硬件升级
    • 容灾备份
    • sql编程
    • 完整的mysql优化需要很深的功底,大公司甚至有专门的DBA写上述

    业务逻辑处理成:Connection Pool:连接层 c3p0连接池等Manager Service util:备份、容灾恢复、集群等sql interface:存储过程、视图触发器parser:查询事物、对象的权限如果是select开头的就认为是读的操作,insert开头的就是写的操作,sql语句的加载从from开始,转换成mysql能够读懂的形式optimizer:mysql优化器 ,经过前面的转换,这里mysql会优化成mysql自己认为最优的方式,并不是我们人为的优化caches & buffers:缓冲

    主要日志文件:

    2、MySQL Linux版的安装

    • 此次安装的是 MySQL 5.5, 安装环境 CentOS 6.5
    • 版本下载地址 官网下载地址
      • 下载 MySQL-Client新葡亰496netMySQL的布局介绍,配置文件及逻辑结构。 和 MySQL-Server
    • 检查当前系统是否安装过MySQL
      • 查询命令: rpm -qa|grep -i mysql
      • 删除命令: rpm -e --nodeps RPM包全名
    • 安装mysql服务端(注意提示)
      • 新葡亰496net 1
    • 安装mysql客户端
    • 查看MySQL安装时创建的mysql用户和mysql组
      • # cat /etc/passwd | grep mysql
      • # cat /etc/group | grep mysql
    • mysql服务的启 停
      • 查看MySQL启停状态: # ps -ef | grep mysql
      • 启停操作:
        • # /etc/init.d/mysql start
        • # /etc/init.d/mysql stop
        • 或者
        • #service mysql start
        • #service mysql stop
      • 设置MySQL 自启服务
        • #chkconfig mysql on 设置自动启动
        • # chkconfig --list | grep mysql 检查是否设置了自动启动
      • 修改配置文件位置
        • 拷贝当前5.5版本cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
        • 5.6版本 cp /usr/share/mysql/my-default.cnf /etc/my.cnf
      • 新葡亰496netMySQL的布局介绍,配置文件及逻辑结构。修改字符集和数据存储路径
        • 查看字符集
          • show variables like 'character%';
          • show variables like '%char%';
          • 新葡亰496net 2
          • 默认的是客户端和服务器都用了latin1,所以会乱码。
        • 修改字符集,修改之前copy 的配置文件。(详细后续代码)
        • MySQL的安装位置
          • 在linux下查看安装目录 ps -ef|grep mysql
    路径 解释 备注
    /var/lib/mysql/ mysql数据库文件的存放路径 /var/lib/mysql/atguigu.cloud.pid
    /usr/share/mysql 配置文件目录 mysql.server命令及配置文件
    /usr/bin 相关命令目录 mysqladmin mysqldump等命令
    /etc/init.d/mysql 启停相关脚本

    新葡亰496net 3

    [client]
    #password = your_password
    port = 3306
    socket = /var/lib/mysql/mysql.sock
    
    # 这一行需要设置字符集
    default-character-set=utf8
    
    # The MySQL server
    [mysqld]
    port = 3306
    
    # 还有这三行
    character_set_server=utf8
    character_set_client=utf8
    collation-server=utf8_general_ci
    
    socket = /var/lib/mysql/mysql.sock
    skip-external-locking
    key_buffer_size = 384M
    max_allowed_packet = 1M
    table_open_cache = 512
    sort_buffer_size = 2M
    read_buffer_size = 2M
    read_rnd_buffer_size = 8M
    myisam_sort_buffer_size = 64M
    thread_cache_size = 8
    query_cache_size = 32M
    # Try number of CPU's*2 for thread_concurrency
    thread_concurrency = 8
    
    [mysql]
    no-auto-rehash
    # 还有这一行
    default-character-set=utf8
    

    可拔插式的存储引擎plugin storage engine大部分用的是myism和innodb

    1. 二进制日志log-bin:主从复制。
    2. 错误日志log-error:默认是关闭的,  记录严重的警告和错误信息, 每次启动和关闭的详细信息等。
    3. 查询日志log:默认是关闭的, 记录查询的sql语句, 如果开启会减低mysql的整体性能, 因为记录日志也是需要消耗系统资源的。

    3、Mysql配置文件

    文件存储层 计算机硬件file systemfile & logs

     

    主要配置文件
    • 二进制日志log-bin
      • 主从复制
      • 新葡亰496net 4
    • 错误日志log-error
      • 默认是关闭的,记录严重的警告和错误信息,每次启动和关闭的详细信息等。
    • 查询日志log
      • 默认关闭,记录查询的sql语句,如果开启会减低mysql的整体性能,因为记录日志也是需要消耗系统资源的
    • 数据文件
      • 两系统
        • windows
          • D:devSoftMySQLServer5.5data目录下可以挑选很多库
        • Linux:
          • 默认路径 #cd /var/lib/mysql/
          • 看看当前系统中的全部库后再进去 #ls -1F | grep ^d
      • frm文件: 存放表结构
      • myd文件: 存放表数据
      • myi文件: 存放表索引
    • 如何配置
      • Windows: my.ini文件
      • Linux: /etc/my.cnf文件

    1.连接层

    数据文件:

    4、Mysql逻辑架构介绍

    最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。

    1. frm文件:存放表结构。
    2. myd文件:存放表数据。
    3. myi:存放表索引。
    总体概览
    • 和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。
      • 新葡亰496net 5
      • 1、连接层
        • 最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。
      • 2、服务层
        • 第二层架构主要完成大多少的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化及部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定查询表的顺序,是否利用索引等,最后生成相应的执行操作。如果是select语句,服务器还会查询内部的缓存。如果缓存空间足够大,这样在解决大量读操作的环境中能够很好的提升系统的性能。
      • 3、引擎层
        • 存储引擎层,存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信。不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取。后面介绍MyISAM和InnoDB
      • 4、存储层
        • 数据存储层,主要是将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互。

    2.服务层

     

    查询说明
    • 首先,mysql的查询流程大致是:
      • mysql客户端通过协议与mysql服务器建连接,发送查询语句,先检查查询缓存,如果命中,直接返回结果,否则进行语句解析
      • 有一系列预处理,比如检查语句是否写正确了,然后是查询优化(比如是否使用索引扫描,如果是一个不可能的条件,则提前终止),生成查询计划,然后查询引擎启动,开始执行查询,从底层存储引擎调用API获取数据,最后返回给客户端。怎么存数据、怎么取数据,都与存储引擎有关。
      • 然后,mysql默认使用的BTREE索引,并且一个大方向是,无论怎么折腾sql,至少在目前来说,mysql最多只用到表中的一个索引。

    2.1 Management Serveices & Utilities : 系统管理和控制工具

    MySQL逻辑架构:

    5、Mysql存储引擎

    • 查看命令
      • 查看当前的MySQL 提供什么存储引擎
        • mysql> show engines;
      • 看你的 MySQL 当前默认的存储引擎:
        • show variables like '%storage_engine%';
      • 新葡亰496net 6
    • MyISAMInnoDB
      • 新葡亰496net 7
    • 阿里巴巴、淘宝用哪个
      • 新葡亰496net 8
      • Percona 为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为。
      • 该公司新建了一款存储引擎叫xtradb完全可以替代innodb,并且在性能和并发上做得更好,
      • 阿里巴巴大部分mysql数据库其实使用的percona的原型加以修改。

    2.2 SQL Interface : SQL接口接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface

    新葡亰496net 9

    2.3 Parser : 解析器SQL命令传递到解析器的时候会被解析器验证和解析。

     

    2.4 Optimizer : 查询优化器。SQL语句在查询之前会使用查询优化器对查询进行优化。用一个例子就可以理解: select uid,name from user where gender= 1;优化器来决定先投影还是先过滤。

    1. 连接层:最上层是一些客户端和连接服务, 包含本地sock通信和大多数基于客户端/服务端工具实现的类似TCP/IP的通信。主要完成一些类似于连接处理、授权认证及相关的安全方案。在该层上引入了线程池的概念, 为通过认证安全介入的客户端提供线程。同样在该层上可以实现基于SSL的安全连接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。
    2. 服务层:第二层架构主要完成多少的核心服务功能, 如SQL接口, 并完成缓存的查询, SQL的分析和优化及部分内置函数的执行。所有跨存储引擎的功能也在这一层实现, 如过程、函数等。在该层, 服务器会解析查询并创建相应的内部解析树, 并对其完成相应的优化, 如确定查询表的顺序、是否利用索引等, 最后生成相应的执行操作。如果是select语句, 服务器还会查询内部的缓存。如果缓存空间足够大, 这样在解决大量读操作的环境中能够很好的提升系统的性能。
    3. 引擎层:存储引擎层, 存储引擎真正负责了MySQL中数据的存储和提取, 服务器通过API与存储引擎来进行通信。不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取。如MyISAM、InnoDB、NDB等。
    4. 存储层:数据存储层, 主要是将数据存储在运行于裸设备的文件系统之上, 并完成与存储引擎的交互。

    2.5 Cache和Buffer: 查询缓存。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等缓存是负责读,缓冲负责写。

     

    3.引擎层

    查看MySQL提供的存储引擎:

    存储引擎层,存储引擎真正的负责了MySQL中数据的 存储和提取 ,服务器通过API与存储引擎进行通信。不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取。后面介绍MyISAM和InnoDB

     1 mysql> show engines;
     2  -------------------- --------- ---------------------------------------------------------------- -------------- ------ ------------ 
     3 | Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
     4  -------------------- --------- ---------------------------------------------------------------- -------------- ------ ------------ 
     5 | CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
     6 | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
     7 | PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
     8 | BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
     9 | MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
    10 | MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
    11 | ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
    12 | InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
    13 | FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
    14  -------------------- --------- ---------------------------------------------------------------- -------------- ------ ------------ 
    15 9 rows in set (0.01 sec)
    

    4.存储层

    或者:

    新葡亰496net,数据存储层,主要是将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互。

    mysql> show variables like '%storage_engine%';
     ---------------------------- -------- 
    | Variable_name              | Value  |
     ---------------------------- -------- 
    | default_storage_engine     | InnoDB |
    | default_tmp_storage_engine | InnoDB |
    | storage_engine             | InnoDB |
     ---------------------------- -------- 
    3 rows in set (0.00 sec)
    

    总体概览

     

    首先,mysql的查询流程大致是:•mysql客户端通过协议与mysql服务器建连接,发送查询语句,先检查查询缓存,如果命中,直接返回结果,否则进行语句解析,也就是说,在解析查询之前,服务器会先访问查询缓存——它存储SELECT语句以及相应的查询结果集。如果某个查询结果已经位于缓存中,服务器就不会再对查询进行解析、优化、以及执行。它仅仅将缓存中的结果返回给用户即可,这将大大提高系统的性能。

    语法解析器和预处理:首先mysql通过关键字将SQL语句进行解析,并生成一颗对应的“解析树”。mysql解析器将使用mysql语法规则验证和解析查询;预处理器则根据一些mysql规则进一步检查解析数是否合法。 查询优化器当解析树被认为是合法的了,并且由优化器将其转化成执行计划。一条查询可以有很多种执行方式,最后都返回相同的结果。优化器的作用就是找到这其中最好的执行计划。。 然后,mysql默认使用的BTREE索引,并且一个大致方向是:无论怎么折腾sql,至少在目前来说,mysql最多只用到表中的一个索引。

    mysql存储引擎

    查看命令

    看你的 mysql 现在已提供什么存储引擎 :

    mysql> show engines;

    InnoDB 默认的,支持事物支持外键,且是行锁

    看你的 mysql 当前默认的存储引擎 :

    mysql> show variables like ‘%storage_engine%';

    默认的是InnoDB当前的也是InnoDB

    各个引擎简介

    1、InnoDB存储引擎

    InnoDB是MySQL的默认 事务型引擎 ,它被设计用来处理大量的短期事务。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。 行级锁,适合高并发情况

    2、MyISAM存储引擎

    MyISAM提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM 不支持事务和行级锁 ,有一个毫无疑问的缺陷就是崩溃后无法安全恢复。

    3、Archive引擎

    Archive存储引擎 只支持INSERT和SELECT 操作,在MySQL5.1之前不支持索引。Archive表适合日志和数据采集类应用。 适合低访问量大数据等情况。根据英文的测试结论来看,Archive表比MyISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%。

    4、Blackhole引擎

    Blackhole引擎没有实现任何存储机制,它会丢弃所有插入的数据,不做任何保存。但服务器会记录Blackhole表的日志,所以可以用于复制数据到备库,或者简单地记录到日志。但这种应用方式会碰到很多问题,因此并不推荐。

    5、CSV引擎

    CSV引擎可以将普通的CSV文件作为MySQL的表来处理,但不支持索引。CSV引擎可以作为一种数据交换的机制,非常有用。CSV存储的数据直接可以在操作系统里,用文本编辑器,或者excel读取。

    6、Memory引擎

    如果需要快速地访问数据,并且这些数据不会被修改,重启以后丢失也没有关系,那么使用Memory表是非常有用。Memory表至少比MyISAM表要快一个数量级。

    7、Federated引擎

    Federated引擎是访问其他MySQL服务器的一个代理,尽管该引擎看起来提供了一种很好的跨服务器的灵活性,但也经常带来问题,因此默认是禁用的。

    MyISAM和InnoDB

    对比项

    MyISAM

    InnoDB

    主外键 不支持 支持 事务 不支持 支持 行表锁 表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作 行锁,操作时只锁某一行,不对其它行有影响, 适合高并发 缓存 只缓存索引,不缓存真实数据 不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响 表空间 小 大 关注点 性能 事务 默认安装 Y Y 默认安装 Y Y 默认安装 Y Y 用户表默认使用 N Y 自带系统表使用 Y N

    innodb 索引 使用 B TREE myisam 索引使用 b-treeinnodb 主键为聚簇索引,基于聚簇索引的增删改查效率非常高。

    阿里巴巴、淘宝用哪个

    • Percona 为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显着的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为。

    •该公司新建了一款存储引擎叫 xtradb 完全可以替代 innodb, 并且在性能和并发上做得更好,

    •阿里巴巴大部分 mysql 数据库其实使用的 percona 的原型加以修改。•AliSql AliRedis

    以上所述是小编给大家介绍的Mysql逻辑架构介绍、mysql存储引擎详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    本文由新葡亰496net发布于网络数据库,转载请注明出处:新葡亰496netMySQL的布局介绍,配置文件及逻辑结构

    关键词: