摘要:1.容灾备份的区别 容灾 (Disaster Tolerance):就是在上述的灾难发生时,在保证生产系统的数据尽量少丢失的情况下,保持生存系统的业务不间断地运行。 容错 (Fault Tolerance):指在计算机系统的软件、硬件发生故障时,保证计算机系统中仍能工作的能力。 区别 :容错可以通过
阅读全文
摘要:最近有个上位机获取下位机上报数据的项目,由于上报频率比较频繁且数据量大,导致数据增长过快,磁盘占用多。 为了节约成本,定期进行数据备份,并通过delete删除表记录。 明明已经执行了delete,可表文件的大小却没减小,令人费解 项目中使用MySQL作为数据库,对于表来说,一般为表结构和表数据。表结
阅读全文
摘要:公司大佬出的考核题中有个有意思的问题: 已知:MySQL 的内部两阶段提交,是为了解决 binlog 和 redo log 的一致性(在 crash recovery 的过程中, 如果发现某个事务的 redo log 已经完成 prepare 阶段, 但未完成 commit,那么会验证该事务是否在
阅读全文
摘要:思考一个问题:下面一条简单的SQL,它加什么锁? delete from t1 where id = 10; 带着你的答案,我们继续往下看。如果要分析上述SQL的加锁情况,必须了解这个SQL的执行前提,MySQL的隔离级别是什么?id列是不是主键?id列有没有索引?前提不同加锁处理的方式也不同。可能
阅读全文
摘要:在之前的博客中,我写了一系列的文章,比较系统的学习了 MySQL 的事务、隔离级别、加锁流程以及死锁,我自认为对常见 SQL 语句的加锁原理已经掌握的足够了,但看到热心网友在评论中提出的一个问题,我还是彻底被问蒙了。他的问题是这样的:加了插入意向锁后,插入数据之前,此时执行了 select…lock
阅读全文
摘要:1、什么是直方图 MySQL8.0开始支持索引之外的数据分布统计信息可选项。它就是直方图(Histogram)。直方图通过估算查询谓词的选择率,以便选择合适的执行计划,也让SQL优化有了更多手段。在DB中,优化器负责将SQL转换为很多个不同的执行计划,然后从中选择一个最优的来实际执行。但是有时候优化
阅读全文
摘要:之所以有这个题目,我既不是故意吸引眼球,也不想在本文对存储过程进行教科书般论述。 《阿里巴巴Java开发手册》是这样规定的: 再结合我最近项目中遇到的存储过程问题,所以今天我打算来聊一聊这个问题。 这事儿要从去年在武汉出差时一位同事的发问说起。 问题是这样的: 我觉得存储过程挺好用的,你为什么不建议
阅读全文
摘要:【前言】 经常有一些朋友向我咨询,如何写出高效的SQL,这不是三言两语能说得清的,索性认真来写一下,增删查改方面的知识我不再赘述,如果有基础薄弱的同学,可以好好的补一补再来看。 以MySQL为基础,MySQL调优篇内容主要包含MySQL逻辑架构、索引知识、表关联算法、explain执行计划解读及SQ
阅读全文
摘要:【前言】 经常有一些朋友向我咨询,如何写出高效的SQL,这不是三言两语能说得清的,索性认真来写一下,增删查改方面的知识我不再赘述,如果有基础薄弱的同学,可以好好的补一补再来看。 以MySQL为基础,MySQL调优篇内容主要包含MySQL逻辑架构、索引知识、表关联算法、explain执行计划解读及SQ
阅读全文
摘要:【前言】 经常有一些朋友向我咨询,如何写出高效的SQL,这不是三言两语能说得清的,索性认真来写一下,增删查改方面的知识我不再赘述,如果有基础薄弱的同学,可以好好的补一补再来看。 以MySQL为基础,MySQL调优篇内容主要包含MySQL逻辑架构、索引知识、表关联算法、explain执行计划解读及SQ
阅读全文
摘要:前言经常有一些朋友向我咨询,如何写出高效的SQL,这不是三言两语能说得清的,索性认真来写一下,增删查改方面的知识我不再赘述,如果有基础薄弱的同学,可以好好的补一补再来看。以MySQL为基础,MySQL调优篇内容主要包含MySQL逻辑架构、索引知识、表关联算法、explain执行计划解读及SQL调优实
阅读全文
摘要:【前言】 经常有一些朋友向我咨询,如何写出高效的SQL,这不是三言两语能说得清的,索性认真来写一下,增删查改方面的知识我不再赘述,如果有基础薄弱的同学,可以好好的补一补再来看。 以MySQL为基础,MySQL调优篇内容主要包含MySQL逻辑架构、索引知识、表关联算法、explain执行计划解读及SQ
阅读全文
摘要:引言问:如何提高一条查询SQL的性能?答:最常用的方式就是加「索引」。问:索引为什么就能提高查询性能?答:索引就像一本书的目录,用目录查当然很快。问:为什么通过目录就能提高查询速度呢。答:…… 都知道通过书目可以快速查询,这只是表象,背后的原因到底是什么呢?下面就来扒一扒。树二叉树由 n( n >
阅读全文
摘要:【前言】 近年来,各大行业去O运动愈演愈烈,一方面是基于对数据库安全可控的考虑,另一方面分布式数据库逐渐占据了OLTP领域较大的市场,尤其在互联网领域,MySQL、PG等分布式数据库的应用非常广泛。. 在进行Oracle向MySQL迁移时会遇到很多难点,那么,从Oracle迁移至MySQL会遇到哪些
阅读全文
摘要:聚集索引或聚簇索引(Clustered Index)是一种对磁盘上实际数据重新组织并按指定的一个或多个列的值排序。数据行的物理顺序与列值(一般是主键那列)的逻辑顺序相同,一个表中只能有一个聚集索引(因为只能以一种物理顺序存放) InnoDB就是用的聚集索引,它的表中的数据都会有一个主键,即使你不创建
阅读全文
摘要:一直以来,MySQL 对 count(*) 的执行都很头疼。MyISAM 引擎自带计数器,可以秒回;不过对 InnoDB 引擎来说实时计算就很头疼了。MySQL8.0 以前有多方法可以变相解决此类问题.比如:1、模拟 MyISAM 的计数器比如要获得表 A 的总数,我们建立两个触发器分别对 inse
阅读全文
摘要:聊聊慢SQL中关于IN语法的优化分析过程。 技术人人都可以磨炼,但处理问题的思路和角度各有不同,希望这篇文章可以抛砖引玉。以一个例子为切入点 一、问题背景 某业务模块反馈SQL慢,优化过程中的一些思考做个记录。基础环境: 主机类型:阿里云 操作系统:CentOS release 7.4 存储:Ali
阅读全文
摘要:原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/6385312.html 我们在程序中一般在做SQL优化的时候讲究使用EXISTS带替代IN的做法,理由是EXISTS执行效率要比IN高。 之前我一直挺懵懂的一件事情是如何使用EXISTS来替换I
阅读全文
摘要:一、SQL注入 1、什么是SQL注入? SQL注入是比较常见的网络攻击方式之一,主要攻击对象是数据库,针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,篡改数据库。 SQL注入简单来说就是通过在表单中填写包含SQL关键字的数据来使数据库执行非常规代码的过程。 SQL数据库的操作是通过SQL语句
阅读全文