• 认识数据库


    1.8 MySQL简介

    MySQL是一个小型关系数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被sun公司10亿美金收购。2009年,SUN又被Oracle以74亿美金收购。

    目前MySQL被广泛地应用在Internet上的中小型网站中。由于体积小、速度快、总体拥有成本低,尤其是开放源代码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

    1.8.1 MySQL的特性

    1. 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。

    2. 支持AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、 OS/2 Wrap、Solaris、SunOS、Windows等多种操作系统。

    3. 为多种编程语言提供了API。这些编程语言包括C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、 Python、Ruby和Tcl等。

    4. 支持多线程充分利用CPU资源支持多用户

    5. 优化的SQL查询算法有效地提高查询速度。

    6. 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的 软件中。

    7. 提供多字符集支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数 据列名。

    8. 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。

    9. 提供用于管理、检查、优化数据库操作的管理工具

    10. 可以处理拥有上千万条记录的大型数据库

    1.9 MySQL获取

    版本介绍:

    Alpha版:开发版,公司内部使用

    Beta版:完成开发后,用户体验版

    RC版:生产环境发布之前的一个小版本或称候选版

    GA版:正式发布版本

    MySQL官网地址:MySQL

    从官方网站下载安装包

    从官方网站下载源代码包

    从官方网站下载二进制包

    从发行版本光盘中获取安装包

    MySQL 常见版本:

    MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。

    MySQL Enterprise Edition 企业版本,需付费,可以试用 30 天。

    MySQL Cluster 集群版,开源免费。可将几个 MySQL Server 封装成一个 Server。

    MySQL Cluster CGE 高级集群版,需付费

    1.10 MySQL在企业中应用

    数据库排名:DB-Engines Ranking - popularity ranking of database management systems

    适用场景:

    互联网公司web网站系统、数据仓库系统、日志记录系统、嵌入式系统

    MySQL典型用户:

    google、雅虎、腾讯、北电、思科、YouTube、SecondLife 百度、优酷网、新浪、中国电子科学研究院

    数商3.0、一大把、哈票网、短信网关、IP通讯

    MySQL在云中获得普遍采用:

    1.11 MySQL体系结构

    Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的

    Connectors指的是不同语言中与SQL的交互

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

    Connection Pool:连接池。管理缓冲用户连接,线程处理等需要缓存的需求

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

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

    Optimizer:查询优化器。SQL语句在查询之前会使用查询优化器对查询进行优化。

    Cache和Buffer: 查询缓存。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数 据.

    Engine:存储引擎。存储引擎是MySql中具体的与文件打交道的子系统。

    -- 查看最大连接数
    show variables like '%max_connections%';

    # 查询缓存配置情况
    show variables like '%query_cache%';

    一条SQL语句执行流程:

    连接层
     (1)提供连接协议:TCP/IP 、SOCKET
     (2)提供验证:用户、密码,IP,SOCKET
     (3)提供专用连接线程:接收用户SQL,返回结果
     通过以下语句可以查看到连接线程基本情况
     mysql> show processlist;
     
    SQL层
      (1)接收上层传送的SQL语句
      (2)语法验证模块:验证语句语法,是否满足SQL_MODE
      (3)语义检查:判断SQL语句的类型
       DDL :数据定义语言
       DCL :数据控制语言
       DML :数据操作语言
       DQL: 数据查询语言
       ...
      (4)权限检查:用户对库表有没有权限
      (5)解析器:对语句执行前,进行预处理,生成解析树(执行计划),说白了就是生成多种执行方案.
      (6)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划
         代价模型:资源(CPU IO MEM)的耗损评估性能好坏
      (7)执行器:根据最优执行计划,执行SQL语句,产生执行结果
     执行结果:在磁盘的xxxx位置上
      (8)提供查询缓存(默认是没开启的),会使用redis tair替代查询缓存功能
      (9)提供日志记录(日志管理章节):binlog,默认是没开启的。
    ​
    存储引擎层(类似于Linux中的文件系统)
        负责根据SQL层执行的结果,从磁盘上拿数据。
        将16进制的磁盘数据,交由SQL结构化化成表,
        连接层的专用线程返回给用户。

    第二章 MySQL 安装部署

    MySQL数据库存在多种版本,不同的版本在不同的平台上(OS,也就是操作系统上)安装方式可能有所不同,因此安装时一定要参考官方文档进行安装。MySQL :: MySQL Documentation

    选择需要的MySQL官方提供的不同版本,点击后在选择MySQL对应版本的,就可以找到安装教程,如意MySQL5.7为例:MySQL :: MySQL 5.7 Reference Manual :: 2 Installing and Upgrading MySQL

    可以选择平台对应的安装方式。

    2.1 window安装MySQL

    window一般我们在开发时需要安装MySQL进行软件的开发,官方提供了两种安装方式:.msi和zip方式。

    2.1.1 安装包方式

    安装方式如下:

    1、下载安装包

    官网下载对应的安装包,根据需要下载对应的版本即可: 8.0:https://cdn.mysql.com//Downloads/MySQLInstaller/mysql-installer-community-8.0.18.0.msi 5.7:https://cdn.mysql.com//Downloads/MySQLInstaller/mysql-installer-community-5.7.28.0.msi

    当然也可以选择自己需要的版本:MySQL :: Download MySQL Installer (Archived Versions)

    2、安装过程

    安装包的方式比较简单,安装提示对应的完成操作即可(不同的版本可能有所区别,但是都大同小异),这种方式适合于新手使用,一般开发者都建议使用压缩包的方式完成。

    2.1.2 压缩包方式

    压缩包的方式在5.7之前和之后不太一样

    zip版(5.5、5.6):

    1、解压到非中文、非特殊字符路径下

    2、将bin目录配置到环境变量中

    3、在主目录下复制一个xx.ini,修改为my.ini,修改其中的basedir和datadir

    basedir=mysql主目录 ​ datadir=mysql主目录/data

    4、以管理员身份打开cmd,将路径切换到bin中,执行命令 mysqld install 新服务名 # 安装mysql服务器到系统

    5、启动服务: 可以手动启动服务 也可以使用net start mysql 命令启动

    6、测试 cmd中执行命令 mysql -uroot -p

    zip版(5.7及8.0):

    1. 下载位置:mysql下载位置

    2. 解压缩后位置:D:\mysql-8.0.15-winx64

    3. 在主目录下复制一个xx.ini,修改为my.ini,修改其中的basedir和datadir

      basedir=mysql主目录 ​ datadir=mysql主目录/data

    4. 初始化命令(记录控制台给出的随机密码,一定记住):

      mysqld --initialize --console

    5. 然后先给mysql服务创建名称(方便到时候建立多个mysql服务时不冲突)

      mysqld --install mysql8

    6. 启动服务:

      net start mysql8

    7. 登陆旧密码登陆(第3步中的密码):

      mysql -u root -p

    8. 修改密码:

      ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
                          
      # 之后键入修改密码的命令:
      ALTER USER root@localhost IDENTIFIED  BY 'root'

    9. 使用新密码登陆:

      mysql -u root -p 新密码

    卸载MySQL:

    停止服务:net stop mysql

    删除服务:mysqld --remove

  • 相关阅读:
    【C++】图像加载(libpng、FreeImage、stb_image)
    CSS笔记——Display属性元素分类(行内、块,行内块)&CSS默认样式及解决方案
    刷题记录(NC19246 数据结构)
    手写一个简单的starter
    基于 Habana Gaudi 的 Transformers 入门
    Ubuntu远程控制注意事项
    计算机组成原理_指令寻址
    Nessus已激活,New Scan按钮不可点击
    zookeeper+kafka消息队列群集部署
    @RequestBody 和 @RequestParam注解使用详解
  • 原文地址:https://blog.csdn.net/weixin_60719780/article/details/127428712