1、基本体系结构

  • 第一层:服务层(为客户端服务):为请求做连接处理,授权认证,安全等。
  • 第二层:Mysql核心服务层:主要提供,查询解析、分析、优化、缓存以及内置函数,跨存储引擎功能(存储过程、视图、触发器)
  • 第三层:存储引擎层,负责数据的存储和提取

逻辑架构图:

MySQL-Share - 图1

SQL执行逻辑流程:

MySQL-Share - 图2

2、优化

1,运维运行环境优化

内存优化:

  1. innodb_buffer_pool_size = innodb_buffer_pool_instances * innodb_buffer_pool_chunk_size * innodb_buffer_amount_chunks_per_instance

a:innodb_buffer_pool_size = 16G # (adjust value here, 50%-70% of total RAM)
b:innodb_buffer_pool_instances = 16
c:innodb_buffer_pool_chunk_size = 256M
x:chunk数量
a/(x*c)=b

参考资料:https://www.percona.com/blog/2018/06/19/chunk-change-innodb-buffer-pool-resizing/

示意图:
MySQL-Share - 图3

2,研发侧优化

SQL优化:

  1. #定位top耗时长的前N条sql:
  2. SELECT EVENT_ID, TRUNCATE(TIMER_WAIT/1000000000000,6) as Duration, SQL_TEXT FROM performance_schema.events_statements_history_long order by Duration desc limit 5;
  3. #根据对应的top5耗时长的sql的event_id查看该sql具体耗时在哪个地方:
  4. SELECT event_name AS Stage, TRUNCATE(TIMER_WAIT/1000000000000,6) AS Duration FROM performance_schema.events_stages_history_long WHERE NESTING_EVENT_ID=1436;

3,误删数据处理

MySQL 相关的误删数据,分类:

  1. 使用delete语句删除数据行;
  2. 使用drop table或者truncate tab语句误删数据表;
  3. 使用drop database语句删除数据库;
  4. 使用rm命令删除整个MySQL实例;
  1. Flashback