随笔分类 -  MySQL / MySQL优化

摘要:问题 mysql> show create table users; + + + | Table | Create Table | + + + | users | CREATE TABLE `users` ( `user` varchar(11) DEFAULT NULL, `password` v 阅读全文
posted @ 2025-06-20 19:50 屠魔的少年
摘要:默认是关闭的,开启方法: ##保存当前PS设置 CALL sys.ps_setup_save(-1); ##开启所有 stage 事件的监控 UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' 阅读全文
posted @ 2022-07-01 15:54 屠魔的少年
摘要:low_query_log_file日志变得很大,对它进项分析变得很不方便,我们就想按天每天产生一个slow_query_log_file文件,每天分析这个日志文件。 如何按天切割呢? mysql> show variables like '%slow_query_log_file%';+ + +| 阅读全文
posted @ 2020-04-13 10:43 屠魔的少年
摘要:转载自:http://hedengcheng.com/?p=577 1 问题描述 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣。当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析、语法解析、权限检查、查询优化、SQL执行等一系列 阅读全文
posted @ 2018-08-09 16:44 屠魔的少年
摘要:外键约束(foreign key constraints) 确保存储在外键表中的数据一致性、完整性。 外键前提:本表列须于外键列类型相同(外键须是外表主键)。 外键选择原则 1.为关联字段创建外键。 2.所有的键都必须唯一。 3.避免使用复合键。 4.外键总是关联唯一的键字段。 阅读全文
posted @ 2018-08-01 15:19 屠魔的少年
摘要:1.减少查询对象的数据页(db block)数量。 尽量避免使用 * 用准确的列明减少不必要的一些资源浪费。 2.查看是否使用了index。 索引是SQL性能调优的重要手段,下面几个是有索引不能使用的情况。 (1)在索引列中不进行加工。 (2)不诱导索引列的数据类型转换。 (3)比较null的时候使 阅读全文
posted @ 2018-08-01 15:13 屠魔的少年
摘要:1.使用or的时候,必须养成两边添加括号,否则结果完全不一样。 2.or条件如果复杂的情况下,可以适当考虑union all改写。 阅读全文
posted @ 2018-08-01 15:12 屠魔的少年
摘要:1.有索引的列最好进行 ‘aa%’形式可以使用一些索引。 2.如果非得进行 ‘%aa%’这种类型查询,那这个条件不要进行主要过滤条件。 意思是这个列如果有索引就不能用索引,即使用了,索引页是进行对整个索引进行全部查找。 3.日期形式的类型,不能进行 ‘20%’ 这种查询,索引将不能使用。 阅读全文
posted @ 2018-08-01 15:11 屠魔的少年
摘要:1.一般来说in比exists更有利(更容易变成join)。 2.尽量避免union,使用union all代替,避免sort。 3,绝对不能在没有on条件下使用join(除非有特殊目的)。 4.outer join的时候注意on和where。 阅读全文
posted @ 2018-08-01 15:10 屠魔的少年
摘要:排查一般MySQL性能问题,通常要记录下面几项信息: 1、mysql> show processlist; 2、mysql> show engine innodb status\G 3、表ddl 4、有问题的SQL的EXPLAIN执行计划 阅读全文
posted @ 2018-08-01 15:05 屠魔的少年
摘要:1,应该尽量使用可以正确存储的最小数据类型 更小的数据类型通常更快,因为他们占用更小的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更小。 2,简单就好。 简单数据类型的操作通常需要更少的CPU周期。例如,整型比字符操作代价更低,因为字符集和校对规则(排序规则)使字符比整型更复杂。 3,尽量避 阅读全文
posted @ 2018-08-01 14:48 屠魔的少年
摘要:物化视图实际上是预先计算并且存储在磁盘上的表,可以通过各种各样的策略刷新和更新。MySQL并不原生支持物化视图。使用开源工具Flexviews可以自己实现物化视图。它由下面这些部分组成: 1)变更数据抓取功能,可以读取服务器的二进制日志并且解析相关行的变更。 2)一系列可以帮助创建和管理视图的定义的 阅读全文
posted @ 2018-08-01 14:47 屠魔的少年
摘要:如果应用在表中保存计数器,在更新计数器时可能会碰到并发问题。有一个技巧:将计数器保存在多行中,更新计数+1的操作改为随机选择一行进行更新,求计数值的时候,做一个sum求和。 阅读全文
posted @ 2018-08-01 14:45 屠魔的少年
摘要:缓存表和汇总表,实时计算统计值是非常昂贵的操作,因为要么需要扫描表中的大部分数据,要么查询语句只能在某些特定的索引上才能有效运行,而这类特定索引一般会对update操作有影响,所以一般不希望创建这样的索引。 使用缓存表和汇总表时,必须决定是实时维护数据还是定期重建,哪个更好依赖于应用程序,但是定期重 阅读全文
posted @ 2018-08-01 14:45 屠魔的少年
摘要:desc select * from test1 where id='1'; desc select * from test1 where id=10; show warnings \G; 阅读全文
posted @ 2018-08-01 14:39 屠魔的少年