- 博客(13)
- 收藏
- 关注
原创 Mysql面试题十三
还有就是通过分库分表的方式进行优化。主要有垂直分库、垂直分表和水平分库、水平分表。垂直分表是基于数据库中的列进行,某个表字段比较多,可以新建一扩展表,水平拆分使用场景:当一个应用难以进行细粒度的垂直拆分,或拆分之后数据量行数巨大,存在单库读写,存储性能瓶颈。水平切分分为库内分表和分库分表,是根据表内数据内在的逻辑关系,将同一个表按不同的条件分散到多个数据库或多个表中,每个表只包含一部分的数据,从而使单个表的数据量便小,达到分布式的效果。水品拆分可以支持非常大的数据量。
2024-12-13 01:00:00
1978
原创 Mysql面试题十二
如果是 mysqld 造成的, show processlist,看看里面跑的 session 情况,是不是有消耗资源的 sql 在运行。4.也有可能是每个 sql 消耗资源并不多,但是突然之间,有大量的 session 连进来导致 cpu 飙升,这种情况就需要跟应用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数。1.当 cpu 飙升到 500%时,先用操作系统命令 top 命令观察是不是 mysqld 占用导致的,如果不是,找出占用高的进程,并进行相关处理。
2024-12-12 07:00:00
289
原创 Mysql面试题十一
一个好的数据库设计方案对于数据库的性能往往会起到事半功倍的效果。需要考虑数据冗余、查询和更新的速度、字段的数据类型是否合理等多方面的内容。
2024-12-12 01:00:00
171
原创 Mysql面试题十
4.应尽量避免在where子句中使用or来连接条件,否则将导致引擎放弃索引进行全表扫描(原因如果一个字段有索引一个没有索引将导致执行引擎不使用索引)。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。=或<>操作符,否则引擎将放弃使用索引而进行全表扫描。8.应尽量避免在where子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。9.应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。
2024-12-11 02:30:00
301
原创 Mysql面试题九
4.应尽量避免在where子句中使用or来连接条件,否则将导致引擎放弃索引进行全表扫描(原因如果一个字段有索引一个没有索引将导致执行引擎不使用索引)。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。=或<>操作符,否则引擎将放弃使用索引而进行全表扫描。8.应尽量避免在where子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。9.应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。
2024-12-11 01:00:00
266
原创 Mysql面试题八
5.如果不需要ORDER BY,进行GROUP BY时加ORDER BY NULL,MYSQL不会再进行文件排序。6.with rollup超级聚合,可以挪到应用程序处理。可以记录上次查询的最大ID,下次查询时根据该ID来查询。2.优化GROUP BY和DISTINCT。4.关联查询中,使用标识列分组的效率更改。limit偏移量大的时候,查询效率低。3.这两种查询数据可以使用索引来优化。
2024-12-10 04:00:00
109
原创 Mysql面试题六
查询条件为in ()如果括号中含有NULL会导致查询结果出错。count(字段)如果字段中含有NULL会导致结果出错。节省空间,NULL需要占用空间,''不占用空间。导致索引性能不好,mysql很难优化可空列的查询。
2024-12-09 02:00:00
141
原创 Mysql面试题五
使用自增ID,在innodb中主键索引作为聚簇索引存在,主键索引的B+树叶子节点上存储了主键索引以及行数据(按照顺序),如果主键索引是自增ID,那么只需要不断向后排列即可,如果是UUID,由于到来的ID与原来的大小不确定,数据插入会造成非常多的数据移动,然后导致产生很多的内存碎片,进而造成插入性能的下降。假设在分布式环境下,三个数据库有三亿数据存放在三个数据库,可能存在如下问题。它主要是根据时间顺序,结合机器ID与序列,生成一个定长的数字。可以保证是连续的而且在分布式系统中是唯一的。
2024-12-09 01:00:00
219
原创 Mysql面试题四
可以使用show variables like ‘slow_query_log’查看是否开启,如果状态值为OFF,可以使用set GLOBAL slow_query_log = on来开启,它会在datadir下产生一个xxx-slow.log的文件。用于记录执行时间超过某个临界值的SQL日志,用于快速定位慢查询,为我们的优化做参考。查看日志,一旦SQL超过了我们设置的临界时间就会被记录到xxx-slow.log中。实操时间应该从长时间设置到短的时间,即将最慢的SQL优化掉。
2024-12-08 05:00:00
228
原创 Mysql面试题三
减少load的数据,或者加快load数据的速度。使用子查询、索引覆盖减少加载的数据量。记录上次查询结束的位置(避免从头查,抛弃大量的数据)从需求的角度减少这种请求。使用内连接进行延迟关联。
2024-12-08 01:00:00
168
原创 Mysql面试题二
文章目录SQL的生命周期?大表数据查询,怎么优化SQL的生命周期?应用服务器与数据库服务器建立一个连接数据库进程拿到请求sql解析并生成执行计划,执行读取数据到内存并进行逻辑处理通过步骤一的连接,发送结果到客户端关掉连接,释放资源大表数据查询,怎么优化sql语句+索引:根据你选择的引擎、表中数据分布情况、索引情况、数据库优化策略、查询中的锁策略进行整体考虑优化。第二加缓存,memcached, redis;主从复制,读写分离;垂直拆分,根据你模块的耦合度,将一个大的系统分为多个
2024-12-07 01:33:10
717
原创 Mysql面试题一
mysql在查询时只能使用一个索引,如果where已经占用了索引,那么排序中就不能使用索引了,这将大大降低查询的速率。如果where判断条件字段和order by字段不同,可以建立联合索引解决。
2024-12-07 01:32:17
528
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人