
数据库系列
文章平均质量分 90
涉及SQL及各种数据库的技术点,包含NoSQL
熊崽_张
这个作者很懒,什么都没留下…
展开
-
MySQL 高性能优化实战总结
MySQL 对于很多 Linux 从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰。在进行 MySQL 的优化之前必须要了解的就是 MySQL 的查询过程,很多的查询优化工作实际上就是遵循一些原则让 MySQL 的优化器能够按照预想的合理方式运行而已。今天给大家体验 MySQL 的优化实战,助你高薪之路顺畅!图 - MySQL 查询过程。...转载 2022-08-04 20:39:21 · 377 阅读 · 0 评论 -
数据库设计的 14 个技巧
数据库设计的 14 个技巧转载 2022-08-04 20:25:24 · 352 阅读 · 0 评论 -
SQL-性能优化梳理
本文主要针对的是关系型数据数据库 MySql。键值类数据库可以参考:先简单梳理下 Mysql 的基本概念,然后分创建时和查询时这两个阶段的优化展开。转载 2022-08-08 23:13:59 · 163 阅读 · 0 评论 -
Redis-内存淘汰策略详解
上面说到了 Redis 可使用最大内存使用完了,是可以使用 LRU 算法进行内存淘汰的,那么什么是 LRU 算法呢?,即最近最少使用,是一种缓存置换算法。在使用内存作为缓存的时候,缓存的大小一般是固定的。当缓存被占满,这个时候继续往缓存里面添加数据,就需要淘汰一部分老的数据,释放内存空间用来存储新的数据。这个时候就可以使用 LRU 算法了。其核心思想是:如果一个数据在最近一段时间没有被用到,那么将来被使用到的可能性也很小,所以就可以被淘汰掉。...转载 2022-08-02 21:55:33 · 1017 阅读 · 0 评论 -
MySQL-count() 的优化
这个问题是今天朋友提出来的,关于查询一个 1200w 的数据表的总行数,用 count(*) 的速度一直提不上去。找了很多优化方案,最后另辟蹊径,选择了用 explain 来获取总行数。转载 2022-08-02 21:01:28 · 1113 阅读 · 0 评论 -
SQL-8 种常被忽视的错误用法
数据库编译器产生执行计划,决定着SQL的实际执行方式。但是编译器只是尽力服务,所有数据库的编译器都不是尽善尽美的。上述提到的多数场景,在其它数据库中也存在性能问题。了解数据库编译器的特性,才能避规其短处,写出高性能的SQL语句。程序员在设计数据模型以及编写SQL语句时,要把算法的思想或意识带进来。编写复杂SQL语句要养成使用WITH语句的习惯。简洁且思路清晰的SQL语句也能减小数据库的负担。......转载 2022-08-08 23:14:12 · 137 阅读 · 0 评论 -
MySQL-三两奇巧
有些时候,为了能方便的查看出差别,一般会采用图形化的方式进行处理。而实际开发需求中更多的是,要求对最终的结果进行去重,此时就用到了1个比较有意思的技巧。一般业务中,常常会遇到的1个需求就是对用户进行分组,比如查询某个用户最近几个月的消费情况。简单的说,我们可以让我们的数据来自另1个select子语句,但是需要给该子语句1个别名,否则MySQL会抛出异常。在实际项目中,经常需要将某一列的内容拼接并返回,特别是一些归集的报表导出的业务中。...转载 2022-08-01 20:52:55 · 68 阅读 · 0 评论 -
MySQL-如何查找删除重复行
来源如何查找重复行如何删除重复行如何查找多列上的重复行错误的查询语句几种正确的方法。转载 2022-08-01 20:43:47 · 434 阅读 · 0 评论 -
SQL调优-初级
如果不查询表中所有的列,尽量避免使用SELECT*,因为它会进行全表扫描,不能有效利用索引,增大了数据库服务器的负担,以及它与应用程序客户端之间的网络IO开销。那么第二次同样的查询,请保持以上语句的一致性,比如不要将where语句里面的id和region位置调换顺序。应用程序慢如牛,原因多多,可能是网络的原因、可能是系统架构的原因,还有可能是数据库的原因。程序中嵌入的一行行的SQL语句,如果使用了一些优化小技巧,定能达到事半功倍的效果。同样只是“尽量”哦,并不是说所有的列。...转载 2022-08-01 20:36:03 · 71 阅读 · 0 评论 -
Redis-初识
来源:http://rrd.me/ekrCqRedis 简介Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key - value 数据库Redis 与 其他 key - value 缓存产品有以下三个特点:Redis 支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis 不仅仅支持简单的 key - value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储Redis 支持数据的备份,即 m.转载 2022-05-27 22:13:39 · 458 阅读 · 0 评论 -
MySQL-全面优化详解
作者:Anwen (整理自 java 知音)原文: juejin.im/post/5c6b9c09f265da2d8a55a855点击阅读全文前往本文概要=======文章内图片有损,需要高清可以在公众号内回复 “大图”概述为什么要优化系统的吞吐量瓶颈往往出现在数据库的访问速度上随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢数据是存放在磁盘上的,读写速度无法和内存相比如何优化设计数据库时:数据库表、字段的设计,存储引擎利用好 MyS.转载 2022-05-22 10:06:49 · 386 阅读 · 0 评论 -
SQL 注入-模拟操作
链接:https://jizhi.im/blog/post/sql_injection_intro先来看一副很有意思的漫画:相信大家对于学校们糟糕的网络环境和运维手段都早有体会,在此就不多做吐槽了。今天我们来聊一聊 SQL 注入相关的内容。何谓 SQL 注入?SQL 注入是一种非常常见的数据库攻击手段,SQL 注入漏洞也是网络世界中最普遍的漏洞之一。大家也许都听过某某学长通过攻击学校数据库修改自己成绩的事情,这些学长们一般用的就是 SQL 注入方法。SQL 注入其实就是恶意用户通过在表单中填.转载 2022-05-22 10:00:23 · 781 阅读 · 0 评论 -
MySQL-InnoDB 中一棵 B + 树能存多少行数据
来源:https://dwz.cn/exC8JdQSInnoDB 的一棵 B + 树可以存放多少行数据?答案:约 2 千万为什么是这么多?因为这是可以算出来的,要搞清楚这个问题,先从 InnoDB 索引数据结构、数据组织方式说起。计算机在存储数据的时候,有最小存储单元,这就好比现金的流通最小单位是一毛。在计算机中,磁盘存储数据最小单元是扇区,一个扇区的大小是 512 字节,而文件系统(例如 XFS/EXT4)的最小单元是块,一个块的大小是 4k,而对于 InnoDB 存储引擎也有自己的最小储.转载 2022-05-22 09:55:23 · 367 阅读 · 0 评论 -
十二张图带你了解 Redis 的数据结构和对象系统
原文地址 mp.weixin.qq.com来自公众号:程序员历小冰Redis 是一个开源的 key-value 存储系统,它使用六种底层数据结构构建了包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象的对象系统。今天我们就通过 12 张图来全面了解一下它的数据结构和对象系统的实现原理。本文的内容如下:首先介绍六种基础数据结构:动态字符串,链表,字典,跳跃表,整数集合和压缩列表。其次介绍 Redis 的对象系统中的字符串对象(String)、列表对象(List)、哈希对象(Has.转载 2022-05-19 21:01:54 · 499 阅读 · 0 评论 -
Redis RDB 持久化详解
原文地址 mp.weixin.qq.com来自公众号:程序员历小冰Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据保存在磁盘上的数据库要快很多。但是一旦进程退出,Redis 的数据就会丢失。为了解决这个问题,Redis 提供了 RDB 和 AOF 两种持久化方案,将内存中的数据保存到磁盘中,避免数据丢失。antirez 在《Redis 持久化解密》一文中说,一般来说有三种常见的策略来进行持久化操作,防止数据损坏:方法 1 是数据库不关心发生故障,在数据文件损坏后通.转载 2022-05-19 21:00:45 · 676 阅读 · 0 评论 -
Redis-事件机制详解
原文地址 mp.weixin.qq.com**来自公众号:**程序员历小冰Redis 采用事件驱动机制来处理大量的网络 IO。它并没有使用 libevent 或者 libev 这样的成熟开源方案,而是自己实现一个非常简洁的事件驱动库 ae_event。Redis 中的事件驱动库只关注网络 IO,以及定时器。该事件库处理下面两类事件:文件事件 (file event):用于处理 Redis 服务器和客户端之间的网络 IO。时间事件 (time eveat):Redis 服务器中的一些.翻译 2022-05-19 20:58:24 · 487 阅读 · 0 评论 -
Mysql-存储引擎 InnoDB详解
原文地址 mp.weixin.qq.com作者:陌北有棵树,Java 人,架构师社区合伙人!关于 MySQL 对于后端程序员的重要性不言而喻,而 InnoDB 也已经是 MySQL 默认的存储引擎。作为我们每天打交道的存储引擎,我们对它可能需要对它有更多的了解。这样对于很多灵异事件,才能从容应对。本次文章的内容大部分来自 MySQL8.0 的官方文档,之所以没有选择现成的资料,而去挑战自己的弱点——英语。是因为最近意识到,学习知识应该到知识的源头,可能最开始会很吃力,但我相信对于后续的技术提升一定.转载 2022-05-19 20:56:27 · 893 阅读 · 0 评论 -
Kylin-优雅地使用 Spark
前言Kylin 用户在使用 Spark 的过程中,经常会遇到任务提交缓慢、构建节点不稳定的问题。为了更方便地向 Spark 提交、管理和监控任务,有些用户会使用 Livy 作为 Spark 的交互接口。在最新的 Apache Kylin 3.0 版本中,Kylin 加入了通过 Apache Livy 递交 Spark 任务的新功能 [KYLIN-3795],特此感谢滴滴靳国卫同学对此功能的贡献。Livy 介绍Apache Livy 是一个基于 Spark 的开源 REST 服务,是 Apache 基金转载 2022-05-17 20:31:57 · 494 阅读 · 0 评论 -
MySQL-索引-B + 树和 B - 树
原文地址 mp.weixin.qq.com前言看了很多关于索引的博客,讲的大同小异。但是始终没有让我明白关于索引的一些概念,如 B-Tree 索引,Hash 索引,唯一索引…. 或许有很多人和我一样,没搞清楚概念就开始研究 B-Tree,B+Tree 等结构,导致在面试的时候答非所问!索引是什么?索引是帮助 MySQL 高效获取数据的数据结构。索引能干什么?提高数据查询的效率。索引:排好序的快速查找数据结构!索引会影响 where 后面的查找,和 order by 后面的排序。索引.转载 2022-05-15 18:40:03 · 209 阅读 · 0 评论 -
SQL-调优
来源: http://suo.im/4LyvVJ本次来讲解与 SQL 查询有关的两个小知识点,掌握这些知识点,能够让你避免踩坑以及提高查询效率。1. 允许字段的值为 null,往往会引发灾难首先,先准备点数据,后面好演示create table animal(id int,name char(20),index(id))engine=innodb;index(id) 表示给 id 这个字段创建索引,并且 id 和 name 都允许为 null。接着插入 4 条数据,其中最后一条数.转载 2022-05-13 21:25:21 · 87 阅读 · 0 评论 -
MySQL-19 条优化技巧
作者:zhangqh,原文:https://segmentfault.com/a/1190000012155267声明一下:下面的优化方案都是基于 “Mysql - 索引 - BTree 类型”。一 善用 EXPLAIN做 MySQL 优化,我们要善用 EXPLAIN 查看 SQL 执行计划。下面来个简单的示例,标注 (1,2,3,4,5) 我们要重点关注的数据1、type 列: 连接类型。一个好的 sql 语句至少要达到 range 级别。杜绝出现 all 级别 2、key 列: 使用到.转载 2022-05-12 20:32:18 · 669 阅读 · 0 评论 -
SQL错误用法示例
本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考。来源:https://dwz.cn/cgAPOWPx1、LIMIT 语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。`SELECT *` `FROM operati.转载 2022-05-11 21:14:22 · 138 阅读 · 0 评论 -
MySQL 百万级数据量分页查询方法及其优化
来源:http://sina.lt/gauW方法 1: 直接使用数据库提供的 SQL 语句语句样式: MySQL 中, 可用如下方法: SELECT * FROM 表名称 LIMIT M,N适应场景: 适用于数据量较少的情况 (元组百 / 千级)原因 / 缺点: 全表扫描, 速度会很慢 且 有的数据库结果集返回不稳定 (如某次返回 1,2,3, 另外的一次返回 2,1,3). Limit 限制的是从结果集的 M 位置处取出 N 条输出, 其余抛弃.方法 2: 建立主键或唯一索引.转载 2022-05-15 18:31:38 · 2605 阅读 · 0 评论 -
记一次生产环境 MySQL 耗时问题追踪实录。
本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考作者:VipAugus 来源:http://1t.click/kQz# 大概过程在测试环境 Docker 容器中,在跨进程调用服务的时候,A 应用通过 Dubbo 调用 B 应用的 RPC 接口,发现 B 应用接口超时错误,接着通过 debug 和日志,发现具体耗时的地方在于一句简单 SQL 执行,但是耗时超过 1000ms。通.转载 2022-03-15 16:49:38 · 279 阅读 · 0 评论 -
MySQL-解决大量数据下慢查询问题
本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.comhttps://www.cnblogs.com/youyoui/p/7851007.html准备工作一般分页查询使用子查询优化使用 id 限定优化使用临时表优化关于数据表的 id 说明当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的.转载 2022-03-15 16:47:18 · 7241 阅读 · 0 评论 -
Hive 介绍与核心知识点 -- 大数据技术栈 12
本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com回顾:大数据平台技术栈 (ps: 可点击查看),今天就来说说其中的 Hive!作者:高广超,多年一线互联网研发与架构设计经验,擅长设计与落地高可用、高性能、可扩展的互联网架构。目前从事大数据相关研发与架构工作。https://www.jianshu.com/p/e9ec6e14fe52Hive 简介Facebook 为了解决海量日志数据的分析而开发了 Hive,后来开源给了 Apache 软件基金会.转载 2022-03-14 22:26:45 · 355 阅读 · 0 评论 -
Mybatis 中 $ 和 #千万不要乱用
开头这是一次代码优化过程中发现的问题,在功能优化后发现部分数据查不到出来了,问题就在于一条 sql 上的 #和 $。下图为两条 sql:从图上可以看出 wwlr.LabelId in(${showLabels}) 和 wwlr.LabelId in(#{showLabels}),其中 showLabels 是传进来一个字符串类型的参数,参数的样子是这样的 “4,44,514”,问题就出在这个参数传进来后 #和 $ 处理的方式是不一样的。区别1、#{} 是预编译处理,MyBatis 在处理 #{}转载 2022-03-13 23:11:26 · 1113 阅读 · 0 评论 -
SQL-select性能优化
来源:http://t.cn/RARX9wJ场景索引优化单列索引多列索引索引覆盖排序场景我用的数据库是 mysql5.6,下面简单的介绍下场景课程表create table Course(c_id int PRIMARY KEY,name varchar(10))数据 100 条学生表:create table Student(id int PRIMARY KEY,name varchar(10))数据 70000 .转载 2022-03-02 20:23:19 · 1202 阅读 · 0 评论 -
数据库-优化小技巧学习
原文地址 AIOps应用程序慢如牛,原因多多,可能是网络的原因、可能是系统架构的原因,还有可能是数据库的原因。那么如何提高数据库 SQL 语句执行速度呢?有人会说性能调优是数据库管理员(DBA)的事,然而性能调优跟程序员们也有莫大的关系。img程序中嵌入的一行行的 SQL 语句,如果使用了一些优化小技巧,定能达到事半功倍的效果。技巧 1 比较运算符能用 “=” 就不用 “<>”“=” 增加了索引的使用几率。技巧 2 明知只有一条查询结果,那请使用 “LIMIT 1”“LIMI.转载 2022-03-02 20:13:50 · 93 阅读 · 0 评论 -
Redis-主从复制详解
来源:http://t.cn/Efr5fc0概述面临问题解决办法主从复制什么是主从复制主从复制的作用主从复制启用主从复制原理图片描述Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。概述.转载 2022-03-02 20:03:47 · 98 阅读 · 0 评论 -
Mybatis中$和#的区别
这是一次代码优化过程中发现的问题,在功能优化后发现部分数据查不到出来了,问题就在于一条 sql 上的 #和 $。下图为两条 sql:从图上可以看出 wwlr.LabelId in(${showLabels}) 和 wwlr.LabelId in(#{showLabels}),其中 showLabels 是传进来一个字符串类型的参数,参数的样子是这样的 “4,44,514”,问题就出在这个参数传进来后 #和 $ 处理的方式是不一样的。区别1、#{} 是预编译处理,MyBatis 在处理 #{} 时,转载 2022-03-01 18:20:09 · 333 阅读 · 0 评论 -
MySQL 数据量大时,delete 操作无法命中索引
原文地址 mp.weixin.qq.com前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考。最近,在脉脉上看到一个楼主提出的问题:MySQL 数据量大时,delete 操作无法命中索引;并且还附上了相关案例截图。最终,楼主通过开启 MySQL 分析优化器追踪,定位到是优化器搞的鬼,它觉得花费时间太长。因为我这个是测试数据,究其原因是因为数据倾斜,导致计算出的数据占比较大、花费时间长。大家要记住一点,一条 SQL 语句走哪条索引是通过其中的优化器和代价分析两个部分来决定的。所以.转载 2022-03-01 18:18:04 · 1248 阅读 · 2 评论 -
select count(*) 底层研究
作者:贾春生https://blog.didiyun.com/index.php/2019/01/08/mysql-count/“SELECT COUNT( *) FROM T” 是个再常见不过的 SQL 需求了。在 MySQL 的使用规范中,我们一般使用事务引擎 InnoDB 作为 (一般业务) 表的存储引擎,在此前提下,COUNT( * )操作的时间复杂度为 O(N),其中 N 为表的行数。而 MyISAM 表中可以快速取到表的行数。这些实践经验的背后是怎样的机制,以及为什么需要 / 可以是这.转载 2022-02-28 16:02:52 · 275 阅读 · 0 评论 -
MySQL 十大经典错误案例
原文作者:张甦来源:http://blog.51cto.com/sumongodb今天就给大家列举 MySQL 数据库中,最经典的十大错误案例,并附有处理问题的解决思路和方法,希望能给刚入行,或数据库爱好者一些帮助,今后再遇到任何报错,我们都可以很淡定地去处理。学习任何一门技术的同时,其实就是自我修炼的过程。沉下心,尝试去拥抱数据的世界!Top 1:Too many connections(连接数过多,导致连接不上数据库,业务无法正常进行)问题还原:解决问题的思路:1、首先先要考虑.转载 2022-02-27 10:20:03 · 404 阅读 · 0 评论 -
MySQL 优化指南
当 MySQL 单表记录数过大时,增删改查性能都会急剧下降,所以我们本文会提供一些优化参考,大家可以参考以下步骤来优化:一、单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度。一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的,而事实上很多时候 MySQL 单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量。1.1 字段尽量使用 TINYINT、SMALLINT、MEDIUM_INT 作为整数类型而非 I转载 2022-02-27 09:55:16 · 164 阅读 · 0 评论 -
高可用Redis服务架构分析与搭建
对于搭建高可用 Redis 服务,网上已有了很多方案,例如 Keepalived,Codis,Twemproxy,Redis Sentinel。其中 Codis 和 Twemproxy 主要是用于大规模的 Redis 集群中,也是在 Redis 官方发布 Redis Sentinel 之前 twitter 和豌豆荚提供的开源解决方案。我的业务中数据量并不大,所以搞集群服务反而是浪费机器了。最终在 Keepalived 和 Redis Sentinel 之间做了个选择,选择了官方的解决方案 Redis Sen转载 2022-01-16 17:40:42 · 172 阅读 · 0 评论 -
MySQL日志原理
MySQL 中有六种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log),中继日志(relay log)。转载 2022-01-16 17:47:14 · 362 阅读 · 0 评论 -
MySQL 索引原理及慢查询优化(转载)
背景MySQL 凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓 “好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通 MySQL”、“SQL 语句优化”、“了解数据库原理” 等要求。我们知道一般的应用系统,读写比例在 10:1 左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重。本人从 2013 年 7转载 2021-02-28 11:02:35 · 153 阅读 · 0 评论 -
java数据库连接池选择及开发配置
性能比较:Druid > TomcatJDBC > DBCP > C3P0,BoneCP转载 2022-01-16 17:33:01 · 1702 阅读 · 0 评论