
数据库
文章平均质量分 84
wtopps
当你的才华满足不了你的野心时,你应该滚去学习
展开
-
SQL小菜之TOP N查找问题
本篇,我们简单的探讨了SQL问题中非常经典的TOP N查找问题,学习了关于该种问题的几种解法,希望对你有所帮助。原创 2025-03-26 16:12:46 · 699 阅读 · 0 评论 -
记一次线上MySQL死锁case
existsAuditingRecordInLock的实现可以看到,使用了共享锁查询audit_process_record的行数,线上MySQL的事务级别使用RR,使用共享锁的目的,应该是希望避免快照读,而是使用当前读,并发场景下,可以查询到其他线程的最新数据,但问题也恰恰出在这里。线程A先获得记录1的排他锁,然后要获取所有记录(包括记录2)的共享锁。线程B先获得记录2的排他锁,然后要获取所有记录(包括记录1)的共享锁。使用其他的分布式锁,例如Redis或者ZK,代替MySQL的锁操作。原创 2025-01-17 17:23:35 · 280 阅读 · 0 评论 -
MySQL InnoDB是如何实现ACID的?
MySQL是如何实现ACID原创 2024-01-31 16:00:33 · 1065 阅读 · 1 评论 -
MySQL慢SQL探究
我们在日常开发中,一定遇见过某些SQL执行较慢的情况,我们俗称“慢SQL”,如果你对系统的接口性能要求较高的话,一定不会放过这种SQL,肯定会想办法进行解决,那么,导致慢SQL出现的原因,究竟可能都有哪些呢?这是一道经典的面试题,就此我们来研究一番,下面,我们就来好好看一下,原因可能出在哪里。本篇我们将从如下几个方面进行讨论:1、慢SQL捕获2、执行计划分析3、引擎参数配置分析让我们就此开启本次慢SQL分析之旅,Let’s go!原创 2023-01-05 09:53:22 · 2693 阅读 · 2 评论 -
什么是MySQL数据空洞?
背景MySQL的数据存储在表空间中,有的时候我们删除了一张表的一半的数据,但是发现表空间文件的大小并没有减少,这是什么原因呢?MySQL数据空洞当对一条数据执行delete操作时,MySQL将数据删除后,并未将数据占用的空间返还给操作系统,而是将当前空间标记为"可复用",当有新的数据插入时,则不会重新申请空间,而是插入到"可复用"空间中,这种"可复用"空间,称之为数据空洞。MySQL官方文档对此的解释如下:After deleting a large part of a MyISAM or AR原创 2021-04-06 17:57:09 · 2133 阅读 · 0 评论 -
CentOS7 mysql8.0 国内镜像源安装
本篇记录一下mysql 8.0版本的安装过程,由于mysql官方的地址下载非常慢,因此本篇将使用国内的镜像站下载mysql安装包。原创 2020-11-11 19:17:21 · 10104 阅读 · 1 评论 -
Navicat Premium 12连接MySQL数据库出现Authentication plugin 'caching_sha2_password' cannot be loaded
问题在登陆自己的ECS的docker mysql时,本地的Navicat Premium客户端连接数据库时抛出Authentication plugin 'caching_sha2_password' cannot be loaded的异常,经过一通查资料,一顿操作猛如虎后,终于解决,在此记录一下。环境:CentOS7MySQL版本:8.0部署方式:docker客户端:Navicat P...原创 2020-03-22 14:34:12 · 404 阅读 · 0 评论 -
MySQL update select更新
问题在使用MySQL时,我们有时候会遇见这样的情况,希望将A表的某些记录的某个字段更新为指定某条记录的某个字段,在Oracle中,我们可以这样:update student t1 set t1.xx = (select t2.xx from student t2 where t2.id = 1);但是在MySQL中,你会得到这样的结果:You can't specify target t...原创 2020-01-16 17:21:08 · 290 阅读 · 0 评论 -
闲聊MySQL:(五)深入分析InnoDB之硬盘存储架构
前言在上一篇中,我们对MySQL InnoDB的内部架构模型进行了简单的介绍,主要分析了InnoDB的内存结构,我们用下图一起来回顾一下:本篇,我们继续聊聊InnoDB,了解一下上图的右半部分,其硬盘存储架构。...原创 2019-07-18 21:23:24 · 682 阅读 · 0 评论 -
闲聊MySQL:(四)深入分析InnoDB之内存架构
在前两篇中,我们对MySQL的存储引擎InnoDB进行了简要分析,可以点击这里查看:[闲聊MySQL:(三)深入分析InnoDB之多版本控制MVCC](https://blog.youkuaiyun.com/wtopps/article/details/91629298)[闲聊MySQL:(二)存储引擎之InnoDB浅析](https://blog.youkuaiyun.com/wtopps/article/details/90938560)本篇,我们继续对InnoDB的进行分析,来了解一下InnoDB的内存架构组成。原创 2019-06-21 20:47:13 · 731 阅读 · 0 评论 -
闲聊MySQL:(三)深入分析InnoDB之多版本控制MVCC
前言在上一篇中,我们介绍了MySQL的核心存储引擎InnoDB,对其特性进行了简单的介绍,本篇,我们继续对InnoDB进行分析,了解一下其内部的重要的机制之一,多版本控制MVCC。InnoDB多版本控制(MVCC)什么是多版本控制(MVCC)?多版本控制指的是一种提高并发的技术。最早的数据库系统,只有读读之间可以并发,读写,写读,写写都要阻塞。引入多版本之后,只有写写之间相互阻塞,其他三...原创 2019-06-12 21:35:29 · 609 阅读 · 0 评论 -
闲聊MySQL:(二)存储引擎之InnoDB浅析
前言上一篇中,对MySQL中支持的引擎列表进行了简要介绍,本篇,我们来浅析一下MySQL中最为常用,也是最为重要的引擎——InnoDB。本篇主要基于MySQL官方文档,InnoDB引擎篇,官方文档地址:https://dev.mysql.com/doc/refman/5.5/en/innodb-introduction.htmlMySQL架构在介绍InnoDB引擎之前,我们先来了解一下My...原创 2019-06-05 20:45:09 · 425 阅读 · 0 评论 -
闲聊MySQL:(一)MySQL存储引擎简述
前言数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。在MySQL中,支持多种存储引擎,本篇,我们就来聊一聊MySQL中的存储引擎。本文使用的MySQL版本为5.6.26,操作系统环境为Linux CentOS。MySQL存储引擎在...原创 2019-04-13 14:30:55 · 466 阅读 · 0 评论 -
Oracle like使用索引
Oracle 中 like 是否可以使用索引当我们扫描一个特别大的表的时候,如果不使用索引,那么查询的效率会非常的慢,当我们使用like条件的时候,是否会触发索引?我们来做一下实验:SELECT * FROM t_ka02 where aka060 like '%86903318000482%'其中aka060是t_ka02的索引,查看下执行效率我们可以看到,查询对全表进行了扫描,并没有进行触发索引原创 2016-09-22 09:58:44 · 3169 阅读 · 1 评论 -
Oracle 中for update 与 for update nowait
for update 和 for update nowait的区别首先一点,如果只是select 的话,Oracle是不会加任何锁的,也就是Oracle对 select 读到的数据不会有任何限制,虽然这时候有可能另外一个进程正在修改表中的数据,并且修改的结果可能影响到你目前select语句的结果,但是因为没有锁,所以select结果为当前时刻表中记录的状态。如果加入了for update, 则Ora转载 2016-09-21 19:00:52 · 549 阅读 · 0 评论 -
Oracle数据库导入导出命令
Oracle数据导入导出imp/exp功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。转载 2016-08-09 14:25:51 · 262 阅读 · 0 评论 -
Oracle常用函数
数值函数1、四舍五入函数:ROUND(n[,m]) 省略m:保留到0位;m>0:小数点后m位;m例子: select round(23.5,0),round(23.5,1),round(23.5,-1) from dual;2、取整函数:CEIL()进一;FLOOR()去尾。 例子: select ceil(23.45),转载 2015-09-26 17:00:44 · 700 阅读 · 0 评论 -
Oracle锁表
使用PL/SQL工具锁表后如何解决?1.菜单栏DBATools——>数据库监视——>查看锁资源——>将SQL在窗口执行——>获取结果的session_id2.菜单栏 工具(Tools)——>会话——>找到与之对应的sid——>关闭线程为什么oracle会锁表: 当oracle执行insert等DML语句时候,会首先自动在锁操作的表上申请一个TM锁,当TM锁原创 2015-09-17 16:43:18 · 1452 阅读 · 0 评论 -
sql之left join、right join、inner join的区别
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只返回两个表中联结字段相等的行举例如下:--------------------------------------------表A记录如下:aID aNum1转载 2015-02-13 08:31:16 · 482 阅读 · 0 评论 -
Postgres error:You might need to increase max_locks_per_transaction
问题描述在使用postgres执行一个存储过程,存储过程的操作是对全库上百张表添加字段,执行到一半的时候抛出了错误:You might need to increase max_locks_per_transaction。原创 2017-11-16 19:55:10 · 5904 阅读 · 0 评论 -
Postgres copy命令导入导出数据
前言最近有需要对数据进行迁移的需求,由于postgres性能的关系,单表3000W的数据量查询起来有一些慢,需要对大表进行切割,拆成若干个子表,涉及到原有数据要迁移到子表的需求。起初的想法是使用存储过程,使用select insert方式进行,但是数据量大的时候耗时有点久,于是需要想别的办法,就发现了postgres本身支持的copy命令。copy命令COPY在PostgreSQL原创 2018-01-18 16:23:11 · 47840 阅读 · 3 评论 -
Mysql is not allowed to connect to this mysql server报错解决办法
现象第一次在服务器上安装mysql后,使用客户端连接服务器的mysql,报错“host xxx is not allowed to connect to this mysql server”。解决办法如果希望使用用户名为”username”,使用密码”password”从任何主机连接到mysql服务器的话:mysql> GRANT ALL PRIVILEGES ON *.*...原创 2018-08-13 11:17:37 · 3037 阅读 · 0 评论 -
MySQL性能优化指南
前言当 MySQL 单表记录数过大时,增删改查性能都会急剧下降,本文会提供一些优化参考,大家可以参考以下步骤来优化。单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度。一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候 MySQL 单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据...转载 2018-10-08 19:04:59 · 267 阅读 · 0 评论 -
Druid连接池 报错:abandon connection原因分析
问题现象:使用Druid的数据库连接池,在进行一个查询SQL的时候,抛出了异常原创 2017-10-25 17:07:48 · 42002 阅读 · 2 评论