java面试题 --- MySQL④

1. 一张表的数据量是百万级的,要做分页查询你怎么优化?

  • 查询字段少的话可以考虑查询的字段都加索引,使用索引覆盖来提升性能;
  • 子查询优化,比如 select * from students where id in ( select id from students where age > 20 limit 100000, 10)

2. 连接查询要注意什么问题吗?

  • 左连接索引加在右表,右连接索引加在左表;
  • 永远要用小表驱动大表,比如 A 表数据量小,B 表数据量大,应该用 A join B。

3. count(1),count(*),count(字段) 有什么区别?

  • count(*) 会统计所有的行,包括为 null 的行,会对所有字段进行扫描;
  • count(1) 也是会统计所有的行,包括为 null 的行,但是它只会对表中的一个字段进行扫描,可以理解为表中有个字段的值全部 1;
  • count(字段名) 只会统计指定字段列,不包括为 null 的行。

表中只有一个字段时 count(*) 效率最高,count(列名) 当列名是主键时,它的效率高于 count(1),其他情况 count(1) 效率更高。


4. 线上系统越跑越慢,你怎么排查?

  • 开启慢查日志,用日志分析工具分析慢 SQL,查看执行计划;
  • 用 show profile 分析 SQL 执行情况。

5. 什么是慢查日志?

  • MySQL 会记录执行时间超过阈值的 SQL,默认阈值是 15s,可以在 MySQL 配置文件配置是否开启、时间阈值以及日志文件位置;
  • MySQL 自带的工具 mysqldumpslow 可以用来分析慢查日志,比如要得到访问次数最多的 10 个 SQL,执行 mysqldumpslow -s c -t 10 日志文件位置 即可。

6. show profile 又是什么?

  • MySQL 提供的用来分析 SQL 执行时资源消耗情况的工具,会保存最近 15 次 SQL 运行情况,通过show variables like 'profiling'查看是否开启,通过set profiling = 'on'开启。执行show profiles可以列出 SQL、执行时间以及它的 id,执行show profile cpu, block io for query sqlId就可以查看该 SQL 执行时的资源消耗情况。

7. 说一说主从复制和读写分离?

  • 主从复制可以保证高可用,降低单个服务器的压力,也可以用从库做升级测试。主库负责写数据,从库负责读数据,主库的 bin log 线程会把更新数据的 SQL 记录到自己的 bin log中,IO 线程在从库启动后,会负责从主库拉取 bin log,放到自己的 relay log 中,从库的 SQL 执行线程再执行 relay log 中的 SQL。
  • 读写分离依赖于主从复制,主库写,从库读,可以用代理实现,比如 sharding-jdbc、mycat等,也可以用 MySQL 提供的 jdbc 驱动包,在配置 datasourceUrl 的时候就配置好从库。

8. 你用过存储过程吗?

  • 用过,一些 SQL 很多地方都要用到,就可以考虑写成一个存储过程。

9. 存储过程和函数有什么异同?

  • 存储过程可以有一个或者多个返回值,必须单独调用;函数只能有一个返回值,可以在查询语句中直接调用。

10. 存储过程和函数有什么优缺点呢?

  • 执行效率高,因为它们是预编译过的;
  • 存储过程代码存放在数据库,可以直接调用,减少网络通讯;
  • 安全性高,它们都需要一定的权限才能调用;
  • 可以重复使用,减少开发人员的工作量;
  • 可移植性差,维护也比较麻烦。

11. 什么是视图?

  • 视图是一个虚拟表,但是可以像操作真实表一样操作它。比如你需要查询的字段分布在两张表,除了连接查询,还可以建立视图。视图可以保护数据,只提供需要的列的权限,也可以简化 SQL,提高复用性。视图的列可以来自同一张表,也可以来自不同的表,视图的建立和删除不影响基本表,对视图内容的修改直接影响基本表,视图来自多个基本表时,不允许添加和删除数据。对视图的操作包括增删改查,视图的建立方法是create view <视图名> as <select语句>,查看用describle <视图名>,修改视图用alter <视图名>,删除视图用drop <视图名>

12. 什么是触发器?

  • 特殊的存储过程,触发了特定条件会自动执行,总共有六种触发器,before insert,after insert,before update,after update,before delete,after delete。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容