mysql -基础介绍 01

一、MySQL 的介绍

MySQL 是一个开源的关系型数据库管理系统(RDBMS),由瑞典 MySQL AB 公司开发,现属于 Oracle 旗下产品。它采用客户端/服务器架构,使用结构化查询语言(SQL)进行数据库操作。

主要特点:

  • 开源免费(社区版)

  • 跨平台支持(Windows、Linux、Mac等)

  • 高性能、高可靠性

  • 支持多用户、多线程

  • 丰富的API接口

  • 支持多种编程语言

二、MySQL 的作用

MySQL 主要用于结构化数据的存储和管理,具体应用包括:

  1. 数据存储:持久化存储业务数据

  2. 数据检索:高效查询和获取数据

  3. 数据管理:提供数据增删改查(CRUD)功能

  4. 数据安全:通过权限控制保障数据安全

  5. 事务处理:保证数据操作的原子性和一致性

  6. 数据关系维护:通过外键等维护数据间关系

典型应用场景:

  • Web应用后端数据库

  • 电子商务系统

  • 日志记录系统

  • 数据仓库

  • 嵌入式数据库

三、MySQL 体系结构详解

MySQL 采用分层架构,主要分为三层:

+-----------------------+
|      客户端层          | 
| (连接处理、授权认证等)  |
+-----------------------+
           ↓
+-----------------------+
|       服务层           |
| (查询解析、优化、执行等) |
+-----------------------+
           ↓
+-----------------------+
|     存储引擎层         |
| (数据存储与提取)       |
+-----------------------+

1. 客户端层

功能:

  • 处理客户端连接请求

  • 身份验证和权限检查

  • 维持和管理连接

核心组件:

  • 连接管理器:接收连接请求,分配线程

  • 线程池(企业版):复用连接线程

  • 授权模块:验证用户名/密码和权限

2. 服务层

功能:

  • SQL语句解析和处理

  • 查询优化

  • 内置函数实现

  • 跨存储引擎功能

核心组件:

(1) SQL接口

  • 接收SQL命令

  • 返回结果集

  • 支持DML、DDL、存储过程等

(2) 解析器

  • 词法分析:将SQL分解为tokens

  • 语法分析:检查语法正确性

  • 生成解析树

(3) 查询优化器

  • 基于成本的优化(CBO)

  • 决定:

    • 使用哪个索引

    • 表的连接顺序

    • 是否使用临时表

  • 生成执行计划

(4) 执行器

  • 调用存储引擎接口

  • 执行查询计划

  • 返回结果集

3. 存储引擎层

功能:

  • 数据的物理存储和检索

  • 实现事务、锁等特性

常见存储引擎对比:

特性InnoDBMyISAMMemory
事务支持 支持(ACID) 不支持 不支持
锁粒度 行级锁 表级锁 表级锁
外键 支持 不支持 不支持
崩溃恢复 支持 有限支持 不支持
适用场景 高并发写/事务场景 读密集型场景 临时数据/缓存

 

四、MySQL 性能测试关注点

1. 连接层性能

关注指标:

  • 最大连接数(max_connections)

  • 连接建立时间

  • 线程缓存命中率(thread_cache_hit_rate)

  • 连接错误率

优化建议:

  • 合理设置max_connections

  • 启用线程池(企业版)

  • 优化连接超时参数(wait_timeout)

2. 查询处理性能

关注指标:

  • QPS(每秒查询数)

  • TPS(每秒事务数)

  • 平均查询响应时间

  • 慢查询比例

优化建议:

  • 优化SQL语句

  • 合理使用索引

  • 调整query_cache_size(8.0前)

  • 优化sort_buffer_size等缓冲区

3. 存储引擎性能(InnoDB为例)

关注指标:

  • IOPS(每秒IO操作数)

  • 缓冲池命中率(innodb_buffer_pool_hit_rate)

  • 脏页比例(innodb_buffer_pool_dirty_pages)

  • 锁等待时间

优化建议:

  • 设置合适的innodb_buffer_pool_size

  • 优化innodb_io_capacity

  • 调整innodb_flush_log_at_trx_commit

  • 监控和解决锁竞争

4. 系统资源使用

关注指标:

  • CPU使用率

  • 内存使用量

  • 磁盘I/O吞吐量

  • 网络带宽使用

优化建议:

  • 监控CPU-boundI/O-bound情况

  • 优化Linux内核参数

  • 使用高性能存储设备(如SSD)

  • 考虑读写分离架构

5. 并发性能

关注指标:

  • 并发用户数下的响应时间

  • 吞吐量随并发增长曲线

  • 死锁发生率

  • 线程等待时间

优化建议:

  • 进行压力测试找到性能拐点

  • 优化事务设计(减少锁持有时间)

  • 合理设置隔离级别

  • 使用连接池管理连接

五、常用性能测试工具

  1. sysbench:综合基准测试工具

  2. mysqlslap:MySQL自带的基准测试工具

  3. JMeter:可进行复杂场景测试

  4. TPC-C:事务处理性能测试

  5. Prometheus+Grafana:监控和可视化

六、性能测试关键参数

以下参数应在测试前后监控和调整:

# 连接相关
max_connections = 500
thread_cache_size = 50

# 查询缓存(8.0前)
query_cache_size = 64M
query_cache_type = 1

# InnoDB缓冲池
innodb_buffer_pool_size = 4G  # 通常设为物理内存的50-70%
innodb_buffer_pool_instances = 8

# IO相关
innodb_io_capacity = 2000
innodb_flush_neighbors = 1

# 日志相关
innodb_log_file_size = 256M
innodb_log_buffer_size = 16M

# 锁相关
innodb_lock_wait_timeout = 50
posted @ 2025-06-10 15:35  Shafir莎菲尔  阅读(56)  评论(0)    收藏  举报