面试题

2020-02-09  本文已影响0人  noodlesbook

1、管理员在高可用架构维护的职责

  1. 搭建:MHA+VIP+SendReport+BinlogServer
  2. 监控及故障处理
  3. 高可用架构的优化
    核心是:尽可能降低主从的延时,让MHA花在数据补偿上的时间尽量减少。
    5.7 版本,开启GTID模式,开启从库SQL并发复制。

2、单表查询

2、mysql聚合函数GROUP_CONCAT
select 不支持结果集是1对多行的显示方式
解决方法:使用GROUP_CONCAT函数,列以行的方式显示

3、having 后过滤
应用场景:需要在group by + 聚合函数后,再做判断过滤使用
例:统计中国,每个省的总人口,只显示总人口数大于500W信息
select district,sum(population) from world.city where countrycode='CHN' group by district having sum(population) >5000000;

4、order by 排序应用
统计中国,每个省的总人口,只显示总人口数大于500W信息,并且按照总人口数从大到小排序输出
select district,sum(population) from world.city where countrycode='CHN' group by district having sum(population) >5000000 order by sum(population) desc;

5、limit 应用
作用:分页显示结果集
例:统计中国,每个省的总人口,只显示总人口数大于500W信息,并且按照总人口数从大到小排序输出,只显示前5名
select district,sum(population) from world.city where countrycode='CHN' group by district having sum(population) >5000000 order by sum(population) desc limit 5;

需求:显示6-10名
limit 5,5 前一个5,跳过5行;后一个5,显示5行

需求:显示3-5名
limit 2,3 显示3行,跳过2行

6、统计每个库,所有表的个数、表名
select table_schema,count(table_name) ,group_concat(name) from information_schema.tables group by table_schema;

7、统计每个库的占用空间总大小
一张表的大小公式:avg_row_lengthtable_rows+index_length
select table_schema,sum(avg_row_length
table_rows+index_length) from information_schema.tables group by table_schema;

8、查询业务数据库(系统库除外),所有非INNODB表。
select table_schema,table_name from information_schema.tables where engine != 'innodb' and table_schema not in ('sys','performance_schema','information_schema','mysql');

9、查询业务数据库(系统库除外),所有非INNODB表。将所有非INNODB表转换为INNODB表。
select concat ("alter table",table_schema,".",table_name,"engine=innodb") from information_schema.tables where engine != 'Innodb' and table_schema not in ('sys','performance_schema','information_schema','mysql') into outfile '/tmp/alter.sql';

注意:如果有报错,需要在配置文件中添加配置;
vim /etc/my.cnf
[mysqld]
secure-file-priv=/tmp

3、union 和 union all 区别

union : 聚合两个结果集,会自动进行结果集去重复。
union all : 聚合两个结果集,不会去重复。

4、redis持久化

image.png
  1. redis 持久化方式有哪些?有什么区别?
    rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能,非实时持久化。
    aof:以追加的方式记录redis操作日志的文件。可以最大程度的保证redis数据安全,类似于mysql的binlog,实时持久化。

  2. 如果写入数据,没有触发持久化条件,关闭redis会不会持久化?
    答:应该问怎么关? shutdown,pkill,kill,killall会持久化,kill -9不会持久化

keys * //十分危险的命令,线上禁止使用

redis的作用:可以作为缓存数据库,MySQL数据库的补充,应用优先在redis取值,redis取到值,则返回,如果没取到值,则到MySQL取值,然后应用转义取到的值存到redis

redis的数据类型及应用场景
字符串:1、session 共享,2、常规计数:微博数,粉丝数,订阅、礼物
字典(hash类型):存储部分变更的数据,如用户信息等。最接近mysql的数据结构
列表:消息队列系统、比如sina微博
集合:案例:在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。
有序集合:排行榜应用,取TOP N操作

DNS服务器
在阿里云、或者自己搭
A记录与CNAME
A记录将域名绑定的IP
CNAME就是将域名绑定到域名

问:2亿行的表,想要删除其中1000w,你们公司怎么做的?假如是按照时间列条件。
答:1、如果2亿行数据表,还没有生成,建议在设计表时,采用分区表的方式(按月range),然后删除时truncate
2、如果2亿行数据表,已经存在,建议使用pt-archive 工具进行归档表,并且删除无用数据。

上一篇下一篇

猜你喜欢

热点阅读