MySQL面试常见之数据表分区设计& 查询缓存&字符集修改&join&varchar

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL面试常见之数据表分区设计& 查询缓存&字符集修改&join&varchar

1.MySQL面试常见之数据表分区如何设计


数据表分区主要是解决监控数据过大造成的单表数据量过大,在存储及查询的过程中对性能造成影响,通过数据表分区,减小数据文件的大小,提高磁盘读写性能。


  • 时间阀值需求,指标明细保留90天,趋势数据保留3年
  • 监控的指标数据需要能查询90天内的明细,所以原始明细数据保留90天,指标多及监控间隔时间短,必然产生大量的数据
  • 每天一个分区存储原始数据
  • 统计趋势数据,及删除超过90天的明细数据
  • 数据表分区规划示意图

image.png


2.MySQL面试常见之查询缓存


数据库优化中,除了Sql本身之外,数据库本身的优化也是很重要的一个环节,缓存就是其中一项。

查看查询缓存情况:

mysql> show variables like '%query_cache%'; (query_cache_type 为 ON 表示已经开启)
+------------------------------+----------+| Variable_name                | Value    |
+------------------------------+----------+
| have_query_cache             | YES      || query_cache_limit            | 1048576  |
| query_cache_min_res_unit     | 4096     || query_cache_size             | 20971520 |
| query_cache_type             | ON       || query_cache_wlock_invalidate | OFF      |
+------------------------------+----------+

如果不是ON,修改/etc/my.cnf配置文件以开启查询缓存:

[mysqld]中添加:

query_cache_size = 20M
query_cache_type = ON

重启mysql服务使配置查询缓存配置生效:

> service mysql restart


3.通过指令改MySQL配置文件字符集


可以的,MySql8.x支持动态修改配置参数

1、可以的,通过 set global 命令直接修改,不用重启mysql

2、要是8.x 可以用 set persist 新特性

mysql> set persist max_connections=default;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from performance_schema.persisted_variables;
+-----------------+----------------+
| VARIABLE_NAME   | VARIABLE_VALUE |
+-----------------+----------------+
| max_connections | 151            |
+-----------------+----------------+
1 row in set (0.00 sec)
mysql> show variables like '%max_connections%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| max_connections        | 151   |
| mysqlx_max_connections | 100   |
+------------------------+-------+
2 rows in set (0.01 sec)


4.join关联有几种类型


Join常用的有3种关联类型。

  • inner join 内连接,只保留两张表中完全匹配的结果集;
  • left join 会返回左表所有的行,即使在右表中没有匹配的记录;
  • right join 会返回右表所有的行,即使在左表中没有匹配的记录;

三种连接如果结果相同,优先使用 inner join,如果使用 left join 左边表尽量小。


6.char 与 varchar2 的区别


  • char的长度是固定的,而varchar2的长度是可以变化的。

  比如,存储字符串“101”,对于char(10),表示你存储的字符将占 10 个字节(包括 7 个空字符),在数据库中它是以空格占位的,而同样的varchar2(10)则只占用 3 个字节的长度,10 只是最大值,当你存储的字符小于 10 时,按实际长度存储。

  • char的效率比varchar2的效率稍高
  • 何时用char,何时用varchar2?

  char和varchar2是一对矛盾的统一体,两者是互补的关系,varchar2比char节省空间,在效率上比char会稍微差一点,既想获取效率,就必须牺牲一点空间,这就是我们在数据库设计上常说的 “以空间换效率”。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8天前
|
缓存 NoSQL 关系型数据库
13- Redis和Mysql如何保证数据⼀致?
该内容讨论了保证Redis和MySQL数据一致性的几种策略。首先提到的两种方法存在不一致风险:先更新MySQL再更新Redis,或先删Redis再更新MySQL。第三种方案是通过MQ异步同步以达到最终一致性,适用于一致性要求较高的场景。项目中根据不同业务需求选择不同方案,如对一致性要求不高的情况不做处理,时效性数据设置过期时间,高一致性需求则使用MQ确保同步,最严格的情况可能涉及分布式事务(如Seata的TCC模式)。
35 6
|
15天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
|
15天前
|
关系型数据库 MySQL 数据库
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
|
15天前
|
缓存 关系型数据库 MySQL
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
|
15天前
|
缓存 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
|
1天前
|
关系型数据库 MySQL Shell
MySQL 查询
MySQL 查询
|
3天前
|
SQL 关系型数据库 MySQL
DQL语言之基础查询(mysql)
DQL语言之基础查询(mysql)
|
3天前
|
SQL 关系型数据库 MySQL
DQL语言之连接查询(mysql)
DQL语言之连接查询(mysql)
|
3天前
|
关系型数据库 MySQL
MySQL全局库表查询准确定位字段
information_schema.COLUMNS 详细信息查询
|
10天前
|
存储 关系型数据库 MySQL
深入理解MySQL中varchar和text的区别
在MySQL中,varchar和text都是用于存储文本数据的数据类型。varchar是可变长度字符串,存储时按实际长度分配空间,适合存储较短的、长度可变的字符串,如用户名。text类型用于存储大量文本,始终占用足够空间,适合文章内容。varchar在存储和查询时可能更快,可被索引,而text需特殊搜索技术。在数据库设计时,应根据存储需求和性能平衡选择。
38 0