![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 57
DoReMiFaSolLaTi
这个作者很懒,什么都没留下…
展开
-
SpringBoot+Mybatis+Druid多数据源配置
1.MAVEN配置<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId&...原创 2019-10-24 17:44:28 · 184 阅读 · 0 评论 -
ES 2.x查询
You Know, for Search精确查询 term:全匹配分词。切记term是包含而不是相等的意思精确查询多个 terms:后跟数组参数。可以看作是多个term组合查询。组合过滤查询 bool:bool可嵌套,构造复杂的filter过滤器{ "bool" : { "must" : [], ==and "should" : [], ...原创 2019-08-29 17:52:55 · 617 阅读 · 0 评论 -
MySQL查询缓存
前言很多关系型数据库能够缓存查询的执行计划,对于相同类型的SQL可以跳过SQL解析和执行计划生成阶段。MySQL在某些场景下也可以实现,但是MySQL还有另一种不同的缓存类型:缓存完整的SELECT查询结果,也就是“查询缓存”。MySQL查询缓存保存查询返回的完整结果。当查询命中该缓存,MySQL会立刻返回结果,跳过了解析,优化和执行阶段。查询缓存系统会跟踪查询中涉及的每个表,如果这些表发生变化,那原创 2017-12-06 16:09:39 · 256 阅读 · 0 评论 -
重构查询的方式
这两天被领导安排了优化SQL的任务,因为应用在线上多次出现了查询超时的异常。在这做下总结。一个复杂查询还是多个简单查询我们总是认为网络通信,查询解析和优化是一件代价高昂的事情,总是强调需要数据库层完成尽可能多的工作,但是这样的想法对于MySQL并不适用,MySQL内部每秒能够扫描内存中上百万行数据,相比之下,MySQL把响应数据传输给客户端就慢很多了。MySQL从设计上让连接和断开连接都很轻量级,在原创 2017-11-24 18:28:21 · 664 阅读 · 0 评论 -
MySQL的绑定变量
绑定变量的原理从MySQL4.1版本开始,就支持服务器端的绑定变量(prepared statement),当创建一个绑定变量SQL时,客户端向服务器发送一个SQL语句的原型。服务器端接收到这个SQL语句后,解析并存储这个SQL语句的部分执行计划,返回给客户端一个SQL语句处理句柄。以后每次执行这类查询,客户端都指定使用这个句柄。绑定变量的优势在服务器只需要解析一次SQL语句。在服务器端某些优化原创 2017-12-04 16:35:01 · 2200 阅读 · 0 评论 -
优化数据访问
查询性能低下最常见的原因是访问的数据太多,除了那些不可避免地需要筛选大量数据的查询,大部分性能低下的查询都可以通过减少访问的数据量的方式进行优化。用下面两个步骤来分析低效的查询很有效:确认应用程序是否在检索大量超过需要的数据。可能是访问了太多的行,也可能是访问了太多的列。确认MySQL服务器是否在分析大量超过需要的数据行。原创 2017-11-24 16:27:29 · 279 阅读 · 0 评论 -
聚簇索引
索引一般是一种数据结构,而聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。原创 2017-11-23 11:38:07 · 349 阅读 · 0 评论 -
MySQL索引基础
前言索引是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键。然而索引经常被误解,好的索引能够轻易将查询性能提高几个数量级,糟糕的索引则会导致各种问题。索引基础看一本书的时候,一般会先看书的目录,然后找到对应的页码。在MySQL中,存储引擎用类似的方法使用索引,先在索引中找到对应值,然后根据匹配的索引记录找到对应的数据行。索引的类型B-TREE索引原创 2017-11-20 17:08:20 · 238 阅读 · 0 评论 -
MySQL数据类型理解和优化
MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。几个简单的设计原则更小的通常更好:一般情况下,应该尽量使用可以正确存储数据的最小数据类型。更小的数据类型更快,占用更少的磁盘,内存和CPU缓存,并且处理时需要的CPU周期更少。简单就好:简单数据类型的操作性能更好。整形比字符串操作的代价更低。比如,用整形存储IP地址而不是字符串,使用MySQL内建的类型而不是字符串。避免翻译 2017-11-15 11:14:48 · 522 阅读 · 0 评论 -
MySQL的视图
前言MySQL5.0版本之后引入了视图。视图本身是一个虚拟表,不存储任何数据。在使用视图的时候,它返回的数据是 MySQL从其他表中生成的。原创 2017-11-30 17:10:01 · 211 阅读 · 0 评论 -
MySQL分区表基础
前言MySQL在创建表时使用PARITION BY字句定义每个分区存放的数据。在执行查询的时候,优化器会根据分区定义过滤那些没有我们需要数据的分区,这样查询就无须扫描所有分区——只需要查找包含需要数据的分区就可以了。原理分区表对应用是透明的,对于用户来说,分区表就是一张普通的表。存储引擎管理分区的各个底层表和管理普通表是一样的,分区表的索引只是在各个底层表上各自加上一个完全相同的索引。但是MySQL原创 2017-11-29 18:20:13 · 275 阅读 · 0 评论 -
范式的一点总结
前言大学的数据库课程了学过范式的相关知识,工作后几乎都遗忘了。最近看的一本书涉及到范式,写点东西总结下。范式的优缺点范式通常能够带来如下好处:范式化的更新操作比反范式化更快。范式化只有很少或者没有重复数据。范式化的表通常更小,可以更好的放在内存里。范式化设计出来的schema的缺点是关联问题。复杂的一些查询语句在范式化的scheme上需要更多的关联,这不但代价昂贵,也会使一些索引策略失效。反原创 2017-11-20 16:24:23 · 361 阅读 · 0 评论 -
MySQL的多版本并发控制
什么是MVCCMySQL的默认隔离级别REPEATABLE READ(可重复读)解决了脏读,不可重复读问题,但还是无法解决幻读的问题。所谓幻读,指的是A事务读取某个范围内的记录时,另外一个B事务又在该范围内插入了新的记录,A事务再次读取该范围的记录时,会产生幻行。InnoDB和XtraDB存储引擎通过多版本并发控制(Multiversion Concurrency Control)MVCC解决了幻读原创 2017-11-13 16:48:14 · 569 阅读 · 0 评论 -
MySql执行基础
前言当希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的。只要理解了这些,很多查询优化工作实际上就是遵循一些原则让优化器能够按照预想的合理的方式运行。MySQL逻辑架构下图展示了MySQL服务器逻辑架构图,有助于理解MySQL各组件之间如何协同工作。 大多数的mysql的核心服务功能都在服务器层,包含查询解析,分析,优化,缓存以及所有的内置函数,所有原创 2017-10-17 11:05:25 · 292 阅读 · 0 评论