MySQL优化
文章平均质量分 90
像豆芽一样优秀
人生得意须尽欢,莫使金樽空对月。
展开
-
MySQL的缓存机制
一、查询缓存为什么MySQL8.0直接把查询缓存的功能删除了呢?一种说法是不建议使用查询缓存。因为查询缓存往往弊大于利。1. 什么是查询缓存?MySQL查询缓存即缓存查询数据的SQL文本及查询结果,用Key-Value的形式保存在服务器内存中。当查询命中缓存,MySQL会立刻返回结果,跳过了解析,优化和执行阶段。2. 查询缓存的命中条件有哪些?首先你得确保开启了查询缓存。(手动狗头MySQL将缓存存放在一个引用表(类似HashMap的数据结构)。通过一个哈希值索引,这个索引通过查询本身、当前原创 2021-10-27 16:50:58 · 4078 阅读 · 0 评论 -
MySQL的视图(view)
一、 什么是视图?视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。二、 为什么要用视图?视图隐藏了底层的表结构, 简化了数据访问操作, 客户端不再需要底层表的机构及其之间的关系。视图是一个查询结果集, 随实体数据表数据变化而变化。视图提供了一个统一访问的接口。(即可以允许用户通过视图访问数据的安全机制, 而不授予用户直接访问底层表的权限), 从而加强了安全性, 使用户只能看到视图所显示的数据。视图还可以被嵌套, 一个原创 2020-10-19 09:45:02 · 3690 阅读 · 0 评论 -
ETL工具kettle的插入更新操作
一、 示例脚本:# 创建表CREATE TABLE `score` ( `id` bigint NOT NULL AUTO_INCREMENT, `sname` varchar(255) DEFAULT NULL COMMENT '学生姓名', `cname` varchar(255) DEFAULT NULL COMMENT '课程名称', `score` int DEFAULT NULL COMMENT '分数', PRIMARY KEY (`id`)) ENGINE=Inno原创 2020-10-14 09:41:57 · 6879 阅读 · 1 评论 -
MySQL中handler_read的用法
概述MySQL有一个神秘的HANDLER命令,此命令非SQL标准语法,可以降低优化器对于SQL语句的解析与优化开销,从而提升查询性能。步骤# 1. 更新会话FLUSH STATUS;# 2. 执行一段SQL语句SELECT * FROM CAR WHERE CAR_BRANK LIKE "别克%" ORDER BY ID DESC LIMIT 10;# 3.1 查看当前会话SHOW SESSION STATUS LIKE "handler_read%";# 3.2 查看全局会话SHOW原创 2020-08-23 20:05:19 · 1373 阅读 · 0 评论 -
MySQL优化工具之Show profiles分析SQL性能
使用show profiles分析SQL性能分析SQL执行带来的开销是优化SQL的重要手段。在MySQL数据库中,可以通过配置profiling参数来启用SQL刨析。该参数开启后,后续执行的SQL语句都将记录其资源开销,例如IO、上下文切换、CPU、Memory等等。根据这些开销进一步分析SQL瓶颈从而进行优化与调整。方法/步骤show profiles是5.0.37之后添加的,如果想使用此功能,确保版本在5.0.37之后。查看数据库版本SELECT VERSION()查看是否打开pro原创 2020-08-22 17:20:48 · 392 阅读 · 0 评论 -
分区表的使用场景有哪些?
分区表1. 什么场景的数据需要分区表非常大以至于无法全部都放在内存中,或者只在表的最后部分有热点数据,其他均为历史数据。分区表的数据更加容易维护。例如,想批量删除大量数据可以使用清除整个分区的方式。还可以对一个独立分区进行优化、检查、修复等操作。分区表的数据可以分布在不同的物理设备上,从而高效地利用多个硬件设备。可以使用分区表来避免某些特殊的瓶颈,例如InnoDB的单个索引互斥访问。如果需要,还可以备份和恢复独立的分区,这在非常大的数据集的场景下效果极好。2. 分区的限制一个表最多只原创 2020-07-09 12:13:52 · 1860 阅读 · 0 评论 -
一条SQL语句如何优化
SQL优化伴我成长很多面试官会问道:给你一条SQL语句如何优化?直观来看:1. 避免使用 SELECT * FROM TABLE,用具体的列替换,避免全表扫描。2. WHERE子句使用 IN或 NOT IN的优化# 示例1SELECT * FROM XIAOCHEN WHERE COMPANY_NAME IN ( SELECT D.COMPANY_NAME FROM ( SELECT COMPANY_NAME FROM XIAOCHEN ORDER BY ID DESC LIMIT 10 )原创 2020-07-07 23:20:39 · 2063 阅读 · 0 评论 -
rank() over,dense_rank() over,row_number() over的区别
rank() over,dense_rank() over,row_number() over的区别LeetCode.178题解(https://leetcode-cn.com/problems/rank-scores/):编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。IdScore13.5023.6534.0043.85原创 2020-07-06 22:24:47 · 1128 阅读 · 0 评论 -
MySQL优化
MySQL优化主要体现在几个方面设计:存储引擎,字段选择,范式与反范式功能:索引,缓存,分区分表架构:主从复制,读写分离,负载均衡设计方面一、存储引擎MySQL >= 5.5 版本默认的存储引擎是InnoDB。InnoDB的数据存储在表空间内,由一系列数据文件组成。InnoDB采用多版本控制机制(MVCC)来支持高并发,并且实现了四个隔离级别。其默认隔离级别为REPETABLE READ(可重复读),并且通过间隙锁策略防止幻读(读未提交)的出现。InnoDB是基于聚簇索引建立的原创 2020-05-20 23:42:37 · 456 阅读 · 0 评论