>  기사  >  데이터 베이스  >  MySQL 고급 지식 아키텍처 소개

MySQL 고급 지식 아키텍처 소개

coldplay.xixi
coldplay.xixi앞으로
2021-01-04 09:26:402411검색

mysql 동영상 튜토리얼 칼럼에서는 MySQL 고급 지식의 구조를 소개합니다

MySQL 고급 지식 아키텍처 소개

권장(무료): mysql 동영상 튜토리얼

1.

개요
  • MySQL은 스웨덴 MySQL AB 회사에서 개발한 관계형 데이터베이스 관리 시스템으로 현재 Oracle에 속해 있습니다.

  • MySQL은 모든 데이터를 하나의 큰 창고에 보관하는 대신 여러 테이블에 데이터를 보관하여 속도를 높이고 유연성을 향상시키는 관계형 데이터베이스 관리 시스템입니다.

  • Mysql은 오픈 소스이므로 추가 비용을 지불할 필요가 없습니다.

  • Mysql은 대규모 데이터베이스를 지원합니다. 수천만 개의 레코드가 포함된 대규모 데이터베이스를 처리할 수 있습니다.

  • MySQL은 표준 SQL 데이터 언어 형식을 사용합니다.

  • Mysql은 여러 시스템에서 사용할 수 있으며 여러 언어를 지원합니다. 이러한 프로그래밍 언어에는 C, C++, Python, Java, Perl, PHP, 에펠, 루비 및 Tcl 등이 포함됩니다.

  • Mysql은 현재 가장 인기 있는 웹 개발 언어인 PHP를 훌륭하게 지원합니다.

  • MySQL은 5천만 개의 레코드가 있는 대규모 데이터베이스와 데이터 웨어하우스를 지원합니다. 32비트 시스템 테이블 파일은 최대 4GB를 지원하고, 64비트 시스템은 최대 8TB의 테이블 파일을 지원합니다.

  • Mysql은 사용자 정의가 가능하며 GPL 프로토콜을 채택하여 소스 코드를 수정하여 자신만의 Mysql 시스템을 개발할 수 있습니다.

고급 MySQL에는 지식이 필요함
    mysql 커널
  • sql 최적화 포위 공격
  • MySQL 서버 최적화
  • 다양한 매개변수 상수 설정
  • 쿼리 문 최적화
  • 마스터-슬레이브 복제
  • 소프트웨어 및 하드웨어 업그레이드
  • 재난 복구 및 백업
  • sql 프로그래밍
  • 완전한 mysql 최적화에는 깊은 기반이 필요합니다. 대기업에도 위의

을 작성하는 전담 DBA가 있습니다. 2. MySQL Linux 버전 설치

    첫 번째 설치 MySQL 5.5이고, 설치 환경은 CentOS 6.5
  • 버전 다운로드 주소 공식 홈페이지 다운로드 주소
    • 다운로드
    • MySQL-ClientMySQL-Server
    • http://downloads.skysql.com/archives/mysql-5.5 /MySQL-server-5.5.16-1.rhel4.i386.rpm
    • http://downloads.skysql.com/archives/mysql-5.5/MySQL-client-5.5.16-1.rhel4.i386.rpm
    • http://downloads.skysql.com/archives/mysql-5.5/MySQL-devel-5.5.16-1.rhel4.i386.rpm
  • 현재 시스템에 MySQL이 설치되어 있는지 확인
    • 쿼리 명령: rpm -qa|grep -i mysql
    • rpm -qa|grep -i mysql
    • 删除命令:  rpm -e --nodeps RPM包全名
  • 安装mysql服务端(注意提示)

    MySQL 고급 지식 아키텍처 소개MySQL 고급 지식 아키텍처 소개

    • 设置密码提示

  • 安装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
    • 修改字符集和数据存储路径
      • 查看字符集
        • show variables like 'character%';
        • show variables like '%char%';삭제 명령: rpm -e --nodeps RPM 패키지 전체 이름

        • mysql 서버 설치(

          주의하세요) 팁

          )MySQL 고급 지식 아키텍처 소개MySQL 고급 지식 아키텍처 소개MySQL 고급 지식 아키텍처 소개

        • 암호 설정 프롬프트
    mysql 클라이언트 설치
MySQL 설치 중에 생성된 mysql 사용자 및 mysql 그룹 보기

MySQL 고급 지식 아키텍처 소개# cat /etc/passwd | grep mysql

    # cat /etc/group | /code><li> <p class="image-caption"> </p>🎜mysql 서비스 시작 + 중지🎜🎜MySQL 시작 및 중지 상태 보기: <code># ps -ef | grep mysql🎜🎜작업 시작 및 중지:🎜🎜# /etc /init.d/mysql start🎜🎜# /etc/init.d/mysql stop🎜🎜 또는 🎜🎜#service mysql start🎜🎜#service mysql stop🎜🎜🎜🎜MySQL 자동 시작 서비스 설정🎜🎜<code>#chkconfig mysql on 자동 시작 설정🎜🎜# chkconfig --list | 자동 시작이 설정되어 있는지 확인 시작 🎜🎜🎜🎜구성 파일 위치 수정🎜🎜현재 🎜5.5 버전 복사🎜: cp /usr/share/mysql/my-huge.cnf /etc/my .cnf🎜🎜🎜5.6 버전🎜 cp /usr/share/mysql/my-default.cnf /etc/my.cnf🎜🎜🎜🎜문자셋 및 데이터 저장 경로 수정🎜 🎜문자 집합 보기🎜🎜'문자%'와 같은 변수 표시 🎜🎜 '%char%'와 같은 변수 표시 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 문자 세트 🎜
    • 기본적으로 클라이언트와 서버 모두 latin1을 사용하므로 코드가 깨집니다.
    • 문자셋을 수정하고 이전에 복사한 구성 파일을 수정합니다. (자세한 후속 코드)
    • MySQL 설치 위치
      • linuxps -ef|grep mysql
에서 설치 디렉터리를 확인하세요.
Path 설명 Remarks
/var/lib/mysql / Mysql 데이터베이스 파일 저장 경로 /var/lib/mysql/atguigu.cloud.pid
/usr/share/mysql 구성 파일 디렉터리 mysql.server 명령 및 구성 파일
/usr/bin 관련 명령 디렉터리 mysqladmin mysqldump 및 기타 명령
/etc/init.d/mysql 관련 스크립트 시작 및 중지

MySQL 고급 지식 아키텍처 소개

MySQL 설치 위치

[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

3, Mysql 구성 파일

기본 구성 파일
  • 바이너리 로그 log-bin
    • master-slave 복제

MySQL 고급 지식 아키텍처 소개

  • 오류 로그 로그-error
    • 는 기본적으로 꺼져 있으며 심각한 경고 및 오류 정보, 각 시작 및 종료에 대한 자세한 정보 등을 기록합니다.
  • 쿼리 로그 로그
    • 는 기본적으로 꺼져 있으며 쿼리 SQL 문을 기록합니다. 켜져 있으면 로그 기록에 시스템 리소스
  • 데이터 파일도 소모되므로 mysql의 전반적인 성능이 저하됩니다. 두 개의 시스템
    • windows
      • D: devSoftMySQLServer5.5data 디렉터리에서 선택할 수 있는 많은 라이브러리가 있습니다
        Linux:
      • 기본 경로 #cd /var/lib/mysql/
        • 현재 시스템의 모든 라이브러리를 살펴보세요. #ls -1F | grep ^d#cd /var/lib/mysql/
        • 看看当前系统中的全部库后再进去 #ls -1F | grep ^d
    • frm文件: 存放表结构
    • **myd文件: ** 存放表数据
    • **myi文件: ** 存放表索引
  • 如何配置
    • Windows: my.ini文件
    • Linux:  /etc/my.cnf文件

4、Mysql逻辑架构介绍

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

    MySQL 고급 지식 아키텍처 소개

  • 1、连接层
    • 最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。
    • 2、服务层
      • 第二层架构主要完成大多少的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化及部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定查询表的顺序,是否利用索引等,最后生成相应的执行操作。如果是select语句,服务器还会查询内部的缓存。如果缓存空间足够大,这样在解决大量读操作的环境中能够很好的提升系统的性能。
    • 3、引擎层
      • 存储引擎层,存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信。不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取。后面介绍MyISAM和InnoDB
    • 4、存储层
      • 数据存储层,主要是将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互。
查询说明
  • 首先,mysql的查询流程大致是:
    • mysql客户端通过协议与mysql服务器建连接,发送查询语句,先检查查询缓存,如果命中,直接返回结果,否则进行语句解析
    • 有一系列预处理,比如检查语句是否写正确了,然后是查询优化(比如是否使用索引扫描,如果是一个不可能的条件,则提前终止),生成查询计划,然后查询引擎启动,开始执行查询,从底层存储引擎调用API获取数据,最后返回给客户端。怎么存数据、怎么取数据,都与存储引擎有关。
    • 然后,mysql默认使用的BTREE索引,并且一个大方向是,无论怎么折腾sql,至少在目前来说,mysql最多只用到表中的一个索引。

5、Mysql存储引擎

  • 查看命令
    • 查看当前的MySQL 提供什么存储引擎
      • mysql> show engines;
    • 看你的 MySQL 当前默认的存储引擎:
      • show variables like '%storage_engine%';
  • frm file

    : 스토어 테이블 구조

    🎜**myd 파일: * * 테이블 데이터 저장🎜🎜**myi 파일: * * 테이블 인덱스 저장 방법🎜🎜🎜🎜Configuration🎜🎜Windows: my.ini 파일🎜🎜Linux: /etc/my.cnf 파일🎜🎜🎜🎜

    4 . MySQL 논리 아키텍처 소개

    🎜전체 개요🎜 🎜🎜다른 데이터베이스와 비교하여 MySQL은 아키텍처가 약간 다르며 다양한 시나리오에서 잘 작동합니다. 스토리지 엔진의 아키텍처에 주로 반영되는 플러그인 스토리지 엔진 아키텍처는 쿼리 처리를 다른 시스템 작업과 데이터 저장 및 추출과 분리합니다. 이 아키텍처를 사용하면 비즈니스 요구 사항과 실제 요구 사항에 따라 적절한 스토리지 엔진을 선택할 수 있습니다.

    MySQL 고급 지식 아키텍처 소개🎜🎜🎜🎜🎜1. 연결 레이어 🎜🎜🎜최상위 레이어는 로컬 양말 통신 및 대부분의 클라이언트 기반을 포함한 일부 클라이언트 및 연결 서비스입니다. 클라이언트/서버 도구로 구현된 tcp/ip와 유사한 통신입니다. 주로 일부 연결 처리, 권한 인증 및 관련 보안 솔루션을 완료합니다. 이 계층에는 인증을 통해 안전하게 접근하는 클라이언트에게 스레드를 제공하기 위해 스레드 풀(Thread Pool)이라는 개념이 도입되었습니다. SSL 기반 보안 링크도 이 계층에서 구현될 수 있습니다. 또한 서버는 안전하게 액세스하는 각 클라이언트에 대해 가지고 있는 운영 권한을 확인합니다. 🎜🎜🎜🎜🎜2. 서비스 계층 🎜🎜🎜두 번째 계층 아키텍처는 주로 SQL 인터페이스와 같은 대부분의 핵심 서비스 기능을 완료하고 캐시된 쿼리, SQL 분석 및 최적화, 일부 내장 기능의 실행을 완료합니다. 프로시저, 함수 등과 같은 모든 교차 스토리지 엔진 기능도 이 계층에서 구현됩니다. 이 계층에서 서버는 쿼리를 구문 분석하고 해당 내부 구문 분석 트리를 생성하며 쿼리 테이블의 순서, 인덱스 사용 여부 등을 결정하는 등 해당 최적화를 완료하고 최종적으로 해당 실행 작업을 생성합니다. select 문인 경우 서버는 내부 캐시도 쿼리합니다. 캐시 공간이 충분히 크면 많은 수의 읽기 작업을 처리하는 환경에서 시스템 성능을 크게 향상시킬 수 있습니다. 🎜🎜🎜🎜🎜3. 엔진 계층 🎜🎜🎜스토리지 엔진은 실제로 MySQL에서 데이터 저장 및 추출을 담당합니다. 다양한 스토리지 엔진에는 다양한 기능이 있으므로 실제 필요에 따라 선택할 수 있습니다. MyISAM과 InnoDB는 추후에 소개될 예정입니다🎜🎜🎜🎜🎜4. 스토리지 레이어🎜🎜🎜데이터 스토리지 레이어는 주로 원시 장치에서 실행되는 파일 시스템에 데이터를 저장하고 스토리지 엔진과의 상호 작용을 완료합니다. 🎜🎜🎜🎜🎜🎜🎜쿼리 설명🎜🎜🎜우선 mysql 쿼리 프로세스는 대략 다음과 같습니다. 🎜🎜mysql 클라이언트는 프로토콜을 통해 mysql 서버와 연결을 설정하고 쿼리 문을 보내고 먼저 쿼리 캐시를 확인합니다. 그렇지 않으면 문 구문 분석🎜🎜에는 문이 올바르게 작성되었는지 확인한 다음 쿼리 최적화(예: 인덱스 스캔을 사용할지 여부, 불가능한 조건, 조기 종료) 쿼리 계획 생성 후 엔진 쿼리 시작, 쿼리 실행 시작, 기본 스토리지 엔진에서 API를 호출하여 데이터를 얻은 후 최종적으로 클라이언트에 반환합니다. 데이터를 저장하는 방법과 데이터를 검색하는 방법은 모두 스토리지 엔진과 관련이 있습니다. 🎜🎜그러면 mysql은 기본적으로 BTREE 인덱스를 사용하며, 일반적인 방향은 아무리 sql을 다루더라도 적어도 현재로서는 mysql이 테이블에서 최대 하나의 인덱스만 사용한다는 것입니다. 🎜🎜🎜🎜

    5. Mysql 스토리지 엔진

    🎜🎜명령 보기🎜🎜현재 MySQL이 제공하는 스토리지 엔진을 확인하세요🎜🎜mysql> showengine;🎜🎜🎜🎜보세요 MySQL의 현재 기본 스토리지 엔진: 🎜🎜'%storage_engine%'과 같은 변수 표시;🎜🎜🎜🎜🎜🎜🎜기본 스토리지 엔진🎜
  • MyISAMMyISAMInnoDB

    MySQL 고급 지식 아키텍처 소개MySQL 고급 지식 아키텍처 소개

    两种引擎对比

  • 阿里巴巴、淘宝用哪个
    • Percona 为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为。
    • 该公司新建了一款存储引擎叫xtradb完全可以替代innodbInnoDB
    • MySQL 고급 지식 아키텍처 소개MySQL 고급 지식 아키텍처 소개

      두 엔진 비교

    • Alibaba와 Taobao는 어느 엔진을 사용하나요?
    Percona는 MySQL 데이터베이스 서버가 개선되어 MySQL에 비해 기능과 성능이 크게 향상되었습니다. 이 버전은 부하가 높은 조건에서 InnoDB의 성능을 향상시키고, DBA에게 매우 유용한 성능 진단 도구를 제공하며, 서버 동작을 제어하기 위한 더 많은 매개변수와 명령을 제공합니다. 🎜🎜회사는 🎜innodb🎜를 완전히 대체할 수 있고 성능과 동시성 면에서 더 나은 🎜xtradb🎜라는 새로운 스토리지 엔진을 만들었습니다. 🎜🎜Alibaba 대부분의 mysql 데이터베이스 실제로 수정하여 페르코나 프로토타입을 사용해보세요🎜🎜🎜🎜

위 내용은 MySQL 고급 지식 아키텍처 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jianshu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제