面试官:MySQL权限表损坏导致无法启动怎么办?
针对MySQL用户表损耗的问题,介绍了多种解决方式,其中一种是通过修改my.cnf配置文件中的参数skip_grant_tables,在启动时跳过加载系统字典。重启mysqld后,使用特定命令修复mysql schema下的所有表。最后,注释或删除skip_grant_tables参数,再次重启mysqld,确保其能够正常启动。在深入排查过程中,发现以上解...
面试官:MySQL权限表损坏导致无法启动怎么办?
由于docker一些限制,我们在mysqld启动会涉及两次;所以解决该问题的方式为:第一次mysqld的启动时先关闭read_only参数,第二次启动时开启read_only参数。之所以选择默认开启read_only参数, 是为了避免在mysqld启动后,选主逻辑未完成时的保护措施;当然选主完成后,会自动对master执行 set global read_onl...
面试官:MySQL是如何执行一条查询语句的?
第二个是表里面任何一条数据发生变化的时候,这张表所有缓存都会失效,所以对于有大量数据更新的应用,也不适合。 所以缓存还是交给ORM框架(比如MyBatis默认开启了一级缓存),或者独立的缓存服务,比如Redis来处理更合适。 在MySQL8.0中,查询缓存已经被移除了。语法解析和预处理 为什么一条SQL语句能够被识别呢?假如随便执行...
面试官:说说Mysql索引失效的几种可能原因
重新挖掘mysql优化知识,聚焦于索引,弥补遗忘。解释索引失效现象,列举常见原因:1. 条件中使用or,索引无法生效。为确保or条件下的索引可用,应为每个列添加索引。2. 多列索引中非首列条件,索引失效。只要包含首列,无论顺序如何,索引通常可用。3. 使用like查询以%开头,索引不被利用。4. 索引列数据...
面试官:MySQL为什么推荐表字段NOT NULL?
尽管在优化文章和书籍中,常强调字段应尽量使用NOT NULL,但往往缺乏详细解释。其实,原因在于NULL字段需要额外空间存储值是否存在,对于MyISAM表,每个多余的NULL字段会占用一个字节。此外,MySQL在处理引用可空列的查询时会遇到困难,索引、统计和值处理会变得复杂,可能导致索引变大,影响查询性能。《高...
面试官:Mysql千万级大表如何进行深度分页优化
首先,分析LIMIT offset, count查询过程,它会先在二级索引中查找大量记录ID,再回表聚集索引获取数据,这在offset+count数值大时会导致全表扫描,索引效率降低。解决方案包括使用子查询,通过获取create_time获取第offset+1条记录,减少回表数据量;利用INNER JOIN,创建包含必要信息的临时表,仅回表少量数据...
美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?
1.8.4 启动keepalived服务 1.8.5 在web服务器上进行配置 注意:web服务器上的配置为临时生效,可以将其写入rc.local文件,注意文件的执行权限。 使用curl命令进行测试 至此keepalived+lvs配置完毕 1.9 常见LVS负载均衡高可用解决方案 Ø 开发类似keepalived的脚本,早期的办法,现在不推荐使用。 Ø heartbeat+lv...