MySQL入门

MySQL学习01

主要描述关于下列主题的内容
  • MySQL的官方指南
  • MySQL的分支、变种与替代
  • MySQL的体系架构
  • MySQL的逻辑层、连接层、服务层、存储引擎
  • MySQL的目录文件
MySQL的官方指南
  • 官网地址
    https://dev.mysql.com/doc/refman/5.7/en/
    https://dev.mysql.com/doc/mysql-errors/5.7/en/
  • 关于MySQL的版本
    MySQL的版本并不是越新越好,就像JDK一样,即使现在已经出到了JDK16,但是绝大部分用到的还是JDK8,因为迁移的成本太大,服务器追求的是稳定。
MySQL的分支、变种与替代
  • Drizzle
    是从MySQL的某个分支Fork出来的代码,但是因为目的不一样,进行了大量的重写,甚至连底层实现的语言都换了,现在和MySQL完全不兼容。
  • MariaDB
    和MySQL高度兼容,这个就是MySQL之父在Oracle收购了MySQL之后,离开Oracle公司设计的一款数据库。是MySQL的一个超集
  • Percona Server
    这款数据库也是兼容MySQL语法的,是高性能MySQL作者设计的一款数据库,有非常多的思想是超前的,逐步都会在MySQL中体现。 偏学术,强调规范。
  • Postgre SQL
    目标是打造一块高可用,在极端情况下数据也能正常的数据库。在高并发场景下,性能也不会急剧下降。是MySQL的一个替代品,在国内并不是非常热门。
  • SQLite
    物联网、手机等软件本地数据库,不需要和外界交互,是使用最多的数据库。
MySQL的体系架构

在这里插入图片描述
这个是官网的一个体系结构:

  • 最上面的是连接层,各种各样的连接驱动
  • 然后是服务层,服务层有向上的接口,有解析器,优化器,还有各种缓存
  • MySQL的插件是可插拔形式的,只要实现了插件需要的接口,都是一个存储引擎
  • 最底下是文件系统,因为到最后,所有的数据都是要落盘的
MySQL的连接层

在这里插入图片描述
因为创建和销毁线程需要消耗大量的资源,所以都会实现池化技术,复用线程。可以通过 show variables like “%max_connections%” 查看最大的连接数,默认的值是151.因为是IO密集型,所以尽量是CPU线程数的两倍。 尽可能的把最大连接数调小,反而可以提高性能。

Server层

在这里插入图片描述
Server层当查询来的时候,会首先去缓存中看,如果存在就直接把结果返回去。因为设计目的就是为了支持多个客户端并发执行,所以为了保证线程的安全,是需要进行加锁的。所以在5.7的版本,默认是关闭缓存。可以通过命令【show variables like “%query_cache_type%”】进行查看。 在MySQL8的版本中,因为缓存命中率的原因,直接移除了原本的缓存逻辑,只保留了存储引擎层面的缓存。

存储引擎

官方支持的存储引擎

  • InnoDB
    支持事务的引擎,支持高并发

  • MyISAM
    不支持事务,且因为是锁表,所以也不支持高并发

  • Archive
    仅支持插入和查询操作,且压缩比非常高

  • Blackhole
    写完日志后,会丢弃数据,并不会保存

  • CSV
    同样是一行中有很多个字段,只是每个字段的分割是用逗号

  • Ferderated
    本地不存储数据,全部存储到远程的服务器上

  • Memory
    就是类似于hashMap的内存存储结构,内存的速度一定会比磁盘的速度要快很多,但是因为是需要并发安全,所以是对整个Memory进行加锁,所以性能会有所损耗。

总结:如果没有遇到InnoDB无法解决的问题,尽量使用InnoDB,这也是MySQL5.5以后默认的存储引擎
可以通过【show engines】命令查看当前数据库都有哪些存储引擎。
可以通过【show variables like “%default_storage_engine%”】命令查看默认的数据库存储引擎。

MySQL的目录文件

在这里插入图片描述

bin

这个目录下存放了一些脚本文件,和服务器操控有关,如:启用、停止,比较重要的几个文件:

  • mysqld 这个主要是用来启用和停止服务的
  • mysqld_safe 用这个启动的时候,如果服务宕机了,会自动拉起
  • mysqld.server 底层调用的也是mysqld_safe
data

这里存放所有罗盘的数据,包括下面比较重要的部分

  • 每个数据库以一个文件夹保存,每个文件夹内表,表由 frm 结构文件和ibd数据文件组成(以innodb举例)
  • error_log 发生异常时候,保存日志的地方
  • slow_query_log ,如果慢查询开关开启时,会记录超过阈值的慢SQL到这个文件里面
  • query_log 这里面会保存所有的操作记录,保证正常的和异常的,包括用户的和系统的
  • bin_log 这个文件主要是复制的时候会用到
include

MySQL源码存放的地方

lib

sdk工具类存放的地方

share

系统库存放的地方,可以看到有针对每个国家的一些处理

my.ini

这个是配置文件,可以配置字符集、存放地址、静态变量等数据,默认扫描的路径是
/etc/my.cnf —> /etc/mysql/my.cnf—>/usr/local/mysql/etc/my.cnf----> 安装目录/my.cnf ----> ~/.my.cnf
这个是以linux的路径举例,后面的配置文件会覆盖前面的配置文件,也可以通过入参来指定配置文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值