数据库
文章平均质量分 88
技术类
郑兆辉
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MySQL 慢查询记录原理和内容解析
背景本文并不准备说明如何开启记录慢查询,只是将一些重要的部分进行解析。如何记录慢查询可以自行参考官方文档:5.4.5 The Slow Query Log本文使用 Percona 版本来开启参数 log_slow_verbosity,得到了更详细的慢查询信息。通常情况下信息没有这么多,但是一定是包含关系,本文也会使用 Percona 的参数解释说明一下这个参数的含义。一、慢查询中的时间实际上慢查询中的时间就是时钟时间,是通过操作系统的命令获得的时间,如下是 Linux 中获取时间的方式原创 2021-08-30 20:06:41 · 537 阅读 · 0 评论 -
Elasticsearch 分页查询四种解决方案与原理
1、from + size 浅分页常用的分页查询根据from+size语句如下:GET /my_index/my_type/_search{ "query": { "match_all": {}}, "from": 10, "size": 5}上面的查询表示从搜索结果中取第10条开始的5条数据。这个查询语句在 Elasticsearch 集群内部是怎么执行?假设该索引只有primary shards,没有 replica shards,假设10个分片。搜索一般原创 2021-08-20 17:45:49 · 705 阅读 · 0 评论 -
深入理解SQL原理:一条SQL查询语句是如何执行的?
本篇文章将通过一条 SQL 的执行过程来介绍 MySQL 的基础架构。首先有一个 user_info 表,表里有一个 id 字段,执行下面这条查询语句:select * from user_info where id = 1;返回结果为:+----+----------+----------+--------+------+---------------------+---------------------+| id | username | password | openid |原创 2021-08-20 17:41:44 · 185 阅读 · 0 评论 -
Mybatis开发要点:resultType和resultMap的区别?
Mybatis返回Xml返回值有resultType和resultMap,我们一般都该如何选择呢?一、resultType1.1 resultType介绍当使用resultType做SQL语句返回结果类型处理时,对于SQL语句查询出的字段在相应的pojo中必须有和它相同的字段对应,而resultType中的内容就是pojo在本项目中的位置。1.2 映射规则基本类型 :resultType=基本类型 List类型: resultType=List中元素的类型 Map类型 单条记录:re转载 2021-08-12 11:43:48 · 312 阅读 · 0 评论 -
数据库连接池c3p0
简介c3p0是用于创建和管理连接,利用“池”的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制、连接可靠性测试、连接泄露控制、缓存语句等功能。目前,hibernate自带的连接池就是c3p0。本文将包含以下内容(因为篇幅较长,可根据需要选择阅读):c3p0的使用方法(入门案例、JDNI使用) c3p0的配置参数详解 c3p0主要源码分析使用例子-入门需求使用C3P0连接池获取连接对象,对用户数据进行简单的增删改查(sql脚本项目中已提供)。工程环境JDK:1.8转载 2021-08-12 11:41:35 · 2342 阅读 · 0 评论 -
MySQL中IN和OR的查询效率和区别
最近遇到了一个网站卡死的问题,但是过了几分钟网站又好了,我让工作了 4 年的一个同事排查问题,他找了半天,毫无头绪。然后,我帮他找到了定时任务,其中有个 sql 查询,执行效率很慢,我建议将 or 改为 in,效率提升了几百倍。下面我们一起回顾一下这个问题。场景描述两个表关联查询 table1 的数据量接近 100 万 table2 的数据量接近 900 万 查询条件中的 title 字段没有加索引 原始查询语句SELECT a.id as id FROM `table1` as a转载 2021-08-12 11:28:08 · 2784 阅读 · 0 评论 -
学习MySQL优化原理,这一篇就够了
说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。MySQL逻辑架构如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。转载 2021-08-11 11:18:09 · 155 阅读 · 0 评论 -
MyBatis 执行流程及源码解析
我们在日常工作中广泛使用mybatis作为数据持久层框架, 但是mybatis的执行流程是怎么样的,你了解过吗。本文将从源码角度,带你分析mybatis的工作原理。先看一个简单的例子,以Service调用Mapper接口为例:public interface StudentMapper { @Select("select * from student") public List<Map<String,Object>> query();}@Servic转载 2021-08-11 09:58:01 · 195 阅读 · 0 评论 -
SQL高性能优化指南!35+条优化建议立马GET
由于工作需要,最近做了很多 BI 取数的工作,需要用到一些比较高级的 SQL 技巧,总结了一下工作中用到的一些比较骚的进阶技巧,特此记录一下,以方便自己查阅,主要目录如下:SQL 的书写规范 SQL 的一些进阶使用技巧 SQL 的优化方法其他相关阅读:后端程序员必备:书写高质量SQL的30条建议 MySQL高性能优化规范建议,速度收藏SQL 的书写规范在介绍一些技巧之前,有必要强调一下规范,这一点我发现工作中经常被人忽略,其实遵循好的规范可读性会好很多,应该遵循哪些规范呢1、转载 2021-08-10 11:26:38 · 595 阅读 · 1 评论 -
一键生成数据库文档,堪称数据库界的Swagger,有点厉害
为了不重复 CV 操作,抱着一丝希望开始在GitHub里找,看看有没有什么工具可以用,结果就真的发现了宝藏,screw(螺丝钉),居然可以生成数据库文档,优秀啊~。数据库支持MySQL MariaDB TIDB Oracle SqlServer PostgreSQL Cache DB配置1、pom文件引入screw核心包,HikariCP数据库连接池,HikariCP号称性能最出色的数据库连接池。<!-- screw核心 --><dependenc转载 2021-08-10 11:25:47 · 223 阅读 · 0 评论 -
SQL优化最干货总结笔记!
前言网上关于SQL优化的教程很多,但是比较杂乱。而且百度字节等大厂的面试难度越来越高,无论从大厂还是到小公司,一直未变的一个重点就是对SQL优化经验的考察。一提到数据库,先“说一说你对SQL优化的见解吧?”。SQL优化已经成为衡量程序猿优秀与否的硬性指标,甚至在各大厂招聘岗位职能上都有明码标注,所以近日有空我专门花费了大量的时间查找资料、修改、排版,希望能够帮助到有需要的朋友,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。有朋友疑问到,SQL优化真的有这么重要么?如下图所示,SQ转载 2021-08-09 10:41:05 · 359 阅读 · 0 评论 -
几百行代码写个Mybatis,原理搞得透透的
一、前言Mybatis 最核心的原理也是它最便于使用的体现,为什么这说?因为我们在使用 Mybatis 的时候,只需要定义一个不需要写实现类的接口,就能通过注解或者配置SQL语句的方式,对数据库进行 CRUD 操作。那么这是怎么做到的呢,其中有一点非常重要,就是在 Spring 中可以把你的代理对象交给 Spring 容器,这个代理对象就是可以当做是 DAO 接口的具体实现类,而这个被代理的实现类就可以完成对数据库的一个操作,也就是这个封装过程被称为 ORM 框架。说了基本的流程,我们来做点转载 2021-08-09 09:57:21 · 388 阅读 · 0 评论 -
MySQL加锁规则
1.加锁规则原则 1:加锁的基本单位是 next-key lock。希望你还记得,next-key lock 是前开后闭区间。原则 2:查找过程中访问到的对象才会加锁。优化 1:索引上(唯一索引)的等值查询,给唯一索引加锁的时候,next-key lock 退化为行锁。(也不会向右遍历了,因此不会增加右侧的间隙锁)(必须是记录匹配的情况下)优化 2:索引上(唯一与非唯一索引)的等值查询,向右遍历时且最后一个值不满足等值条件的时候,next-key lock 退化为间隙锁。(记录匹配或不匹配都可,匹配上了转载 2021-08-06 11:11:05 · 1558 阅读 · 0 评论 -
MySQL用得好好的,为什么要转ES?
京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调用量都非常大,造成了订单数据读多写少的情况。我们把订单数据存储在MySQL中,但显然只通过DB来支撑大量的查询是不可取的。同时对于一些复杂的查询,MySQL支持得不够友好,所以订单中心系统使用了Elasticsearch来承载订单查询的主要压力。Elasticsearch作为一款功能强大的分布式搜索引擎,支持近实时的存储、搜索数据,在京东到家订单系统中发挥着巨大作用,目前订单中心ES集群存储数据量达到转载 2021-08-05 14:05:37 · 230 阅读 · 0 评论 -
蚂蚁一面:谈谈你对读写分离以及分库分表的理解
大家好呀!今天和小伙伴们聊聊读写分离以及分库分表。相信很多小伙伴们对于这两个概念已经比较熟悉了。这篇文章全程都是大白话的形式,希望能够为你带来帮助!如果你之前不太了解这两个概念,那我建议你搞懂之后,可以把自己对于读写分离以及分库分表的理解讲给你的同事/朋友听听。读写分离何为读写分离?见名思意,根据读写分离的名字,我们就可以知道:读写分离主要是为了将对数据库的读写操作分散到不同的数据库节点上。这样的话,就能够小幅提升写性能,大幅提升读性能。我简单画了一张图来帮助不太清楚读写分离的.转载 2021-08-05 13:56:50 · 649 阅读 · 0 评论 -
count(*) 怎么优化?
前言哈喽,我是狗哥。小伙伴都知道我最近换工作了,薪资、工作内容什么的都是我比较满意的。五月底也面试了有 6、7 家公司,应该拿了有 5 个 offer。这段时间也被问了很多面试题,我打算写一个专题分享出来,希望对你们有所帮助~这期面试官提的问题是:count (1) 和 count (*) 有啥区别?你更推荐用哪个?数据量很大的情况下怎么优化?国际惯例先上思维导图:1.1 往期精彩MySQL 查询语句是怎么执行的?MySQL 索引MySQL 日志MySQL .转载 2021-08-04 10:41:00 · 3447 阅读 · 0 评论 -
为什么索引可以让查询速度变快,你有思考过吗?
概述人类存储信息的发展历程大致经历如下:由于是个人凭着自己理解总结的,因此可能不一定精确,但是毋庸置疑的是,在当代,各大公司机构部门的数据都是维护在数据库当中的。数据库作为数据存储介质发展的最新产物,必然是具有许多优点的,其中一个很大的优点就是存储在数据库中的数据访问速度非常快。数据库访问速度快的一个很重要的原因就在于索引index的作用。也就是这篇文章的主要想介绍的内容,为什么索引可以让数据库查询变快?计算机存储原理在理解索引这个概念之前,我们需要先了解一下计算机存储方面的基本知识转载 2021-08-04 10:16:52 · 423 阅读 · 0 评论 -
Elasticsearch的核心原理
ES的基本概念ES=elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时地存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。Lucene与ES关系?1)Lucene只是一个库。想要使用它,你必须使用Java来作为转载 2021-08-04 09:28:45 · 285 阅读 · 0 评论 -
Elasticsearch 是如何做到快速检索的
最近接触的几个项目都使用到了 Elasticsearch (以下简称 ES ) 来存储数据和对数据进行搜索分析,就对 ES 进行了一些学习。本文整理自我自己的一次技术分享。本文不会关注 ES 里面的分布式技术、相关 API 的使用,而是专注分享下ES 如何快速检索这个主题上面。这个也是我在学习之前对 ES 最感兴趣的部分。本文大致包括以下内容:关于搜索 传统关系型数据库和 ES 的差别 搜索引擎原理 细究倒排索引 倒排索引具体是个什么样子的(posting list ->..转载 2021-08-04 09:23:35 · 637 阅读 · 0 评论 -
当数据库遇到分布式,你会怎么做?
数据库通常有着完善的事务支持,但是局限于单机的存储和性能,于是就出现了各种分布式解决方案。最近读了《Designing Data-Intensive Applications》这本书,所以做一个总结,供大家做个参考,有什么不对的请大家指正,一起讨论。数据模型数据模型可以说软件开发中最重要的部分,因为影响着我们的思考方式、解题思路以及代码的编写方式。多数应用使用层层叠加的数据模型进行构建,对于每层数据模型的关键问题是:它如何用低一层的数据模型来表示。多数应用程序开发都使用面向对象编程的编程语言来开转载 2021-08-04 09:22:31 · 363 阅读 · 0 评论 -
MySQL千万级数据的表如何优化
这里先说明一下,网上很多人说阿里规定500w数据就要分库分表。实际上,这个500w并不是定义死的,而是与MySQL的配置以及机器的硬件有关。MySQL为了提升性能,会将表的索引装载到内存中。但是当表的数据到达一定的量的时候,会导致内存无法存储这些索引,无法存储索引,就只能进行磁盘IO,从而导致性能下降。实战调优我这里有张表,数据有1000w,目前只有一个主键索引CREATE TABLE `user` ( `id` int(10) NOT NULL AUTO_INCREMENT, `un转载 2021-08-02 10:25:42 · 351 阅读 · 0 评论 -
索引设计(索引设计详细规范)
索引命名规范:单值索引,建议以 idx_ 为开头,字母全部小写。例如:alter table t1 add key idx_r1(r1);组合索引,建议以 dx_multi_ 开头,字母全部小写。例如:alter table t1 add key idx_multi_1(r1,r2,r3) ;唯一索引,建议以 udx_ 为开头,字母全部小写;如果是多值唯一索引,则命名方式类似 udx_multi_1 等。例如:alter table t1 add unique key ud转载 2021-07-30 15:03:29 · 2449 阅读 · 0 评论 -
利用springboot+elasticSearch,实现数据高效搜索,实战开发
本文主要介绍分为以下几个部分:第一部分:环境准备,安装ElasticSearch,安装 ElasticSearch-head 插件可视化web界面 第二部分:SpringBoot 整合 ElasticSearch 开发 第三部分:CRUD 测试二、ElasticSearch 安装为了和真实环境一致,我们采用CentOS7来部署 ElasticSearch 服务。建议把所需的安装包,手动从网上下载下来,因为服务器下载 ElasticSearch 安装包速度像蜗牛……,非常非常慢~~,可能是国转载 2021-07-27 10:28:46 · 1436 阅读 · 0 评论 -
MySQL的三种日志和MVCC原理
MySQL的在文件中是如何存储的?答:数据是存在页中的,一页的大小是 16kb, 一个表由很多的页组成,这些页组成了B+树。imgMYSQL内存中,多个这样的数据结构组成一个双向链表imgSQL语句是如何执行的呢?MySQL的逻辑架构图如下所示:图片当我们需要更新一条数据时,是需要先从磁盘中取出来,更新后再持久化到磁盘中吗?答:不是的,如果这样的话,一条 SQL 的执行过程太慢了,因为对一个大磁盘文件的读写操作是要耗费大量时间的。所以真正的执行过程是,...转载 2021-07-27 09:55:03 · 1179 阅读 · 0 评论 -
SQL 查询优化之 WHERE 和 LIMIT 使用索引的奥秘
奇怪的慢sql我们先来看2条sql第一条:select*fromacct_trans_logWHEREacct_id =1000000000009000757orderbycreate_timedesclimit0,10第二条:select*fromacct_trans_logWHEREacct_id =1000000000009003061orderbycreate_timedesclimit0,10表的索引及数据...转载 2021-07-26 14:14:08 · 6523 阅读 · 3 评论 -
Mybatis的这些坑,把我坑惨了!
大多数开发者应该都使用过Hibernate或者Mybatis的框架,或多或少都踩过一些坑!如在MyBatis/Ibatis中#和$的区别,#方式能够很大程度防止sql注入,$方式无法防止Sql注入。所以,老司机 对新手说,最好用#。简单的说#{}是经过预编译的,是安全的,而是未经过预编译的,仅仅是取变量的值,是非安全的,存在sql注入。有些特例是需要关注的,有的时候需要用 解决解决一些实际问题。如在执行sql语句时你有时并不希望让变量进行处理,而是直接赋值执行,这时就要用到(${a})了,在使用时还转载 2021-07-26 13:41:05 · 1380 阅读 · 0 评论 -
Redis和Mysql的区别?
通常来说,当数据多、并发量大的时候,架构中可以引入Redis,帮助提升架构的整体性能,减少Mysql(或其他数据库)的压力,但不是使用Redis,就不用MySQL。因为Redis的性能十分优越,可以支持每秒十几万此的读/写操作,并且它还支持持久化、集群部署、分布式、主从同步等,Redis在高并发的场景下数据的安全和一致性,所以它经常用于两个场景:缓存 经常会被查询,但是不经常被修改或者删除的数据;比如数据字典,业务数据中的热点数据;这样不仅提升查询效率,还可以减少数据库的压力;转载 2021-07-21 10:33:28 · 250 阅读 · 0 评论
分享