![](https://img-blog.csdnimg.cn/63d5278a287341b99c001ce64371628a.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据库
文章平均质量分 80
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
Monster_起飞
代码路上的小学生,主要涉及有Java、OutSystems、分布式、微服务、低代码等,热爱技术,乐于分享,一起成长,遇见未知的自己
展开
-
MySQL索引优化与sql优化
将一个大连接查询分解成对每一个表进行一次单表查询,然后在应用程序中进行关联,这样做的好处有:在select后面有子查询的情况称为内联子查询,SQL返回多少行,子查询就需要执行过多少次,严重影响SQL性能。由于MySQL的优化器对于子查询的处理能力比较弱,所以不建议使用子查询,可以改写成Inner Join,之所以 join 连接效率更高,是因为 MySQL不需要在内存中创建临时表1.6 避免在使用or来连接查询条件如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描。对于以下两句S原创 2022-06-10 10:53:39 · 648 阅读 · 1 评论 -
MySQL数据库慢查询的原因
1. 单表数据量太大1.1 单表数据量太大为什么会变慢?一个表的数据量达到好几千万或者上亿时,加索引的效果没那么明显啦。性能之所以会变差,是因为维护索引的B+树结构层级变得更高了,查询一条数据时,需要经历的磁盘IO变多,因此查询性能变慢。1.2 一棵B+树可以存多少数据量大家是否还记得,一个B+树大概可以存放多少数据量呢?InnoDB存储引擎最小储存单元是页,一页大小就是16k。B+树叶子存的是数据,内部节点存的是键值+指针。索引组织表通过非叶子节点的二分查找法以及指针确定数据在哪个页中,进而再原创 2022-05-31 14:28:47 · 1860 阅读 · 1 评论 -
公司禁止JOIN查询怎么办?
场景很多公司(特别是做电商的)其实都是不允许多表关联查询的,或者严格控制关联的表数量,比如最多关联2、3张表。此时,如果某个需求又确实需要进行关联查询怎么办呢?比如前端有个页面:很明显,这个页面字段来自两张表:t_productt_user正常来说,直接这样写SQL即可:SELECT p.id, p.product_name, p.price, u.user_name, u.user_ageFROM t_product p LEFT JOIN t_user u ON p.user_i原创 2021-12-15 16:08:12 · 5452 阅读 · 12 评论 -
详解SQL Server分布式查询
SQL Server所谓的分布式查询(Distributed Query)是能够访问存放在同一部计算机或不同计算机上的SQL Server或不同种类的数据源, 从概念上来说分布式查询与普通查询区别 它需要连接多个MSSQL服务器也就是具有多了数据源.实现在服务器跨域或跨服务器访问. 而这些查询是否被使用完全看使用的需要.本篇将演示利用SQL ServerExpress链接远程SQL Server来获取数据方式来详细说明分布式查询需要注意细节.先看一下系统架构数据查询基本处理:当然如果采用了分布式查询原创 2021-10-16 11:44:18 · 2140 阅读 · 4 评论 -
使用Redisson实现分布式锁
Redisson 实现分布式锁原理分析在了解分布式锁具体实现方案之前,我们应该先思考一下使用分布式锁必须要考虑的一些问题。互斥性:在任意时刻,只能有一个进程持有锁。防死锁:即使有一个进程在持有锁的期间崩溃而未能主动释放锁,要有其他方式去释放锁从而保证其他进程能获取到锁。加锁和解锁的必须是同一个进程。锁的续期问题。常见的分布式锁实现方案基于 Redis 实现分布式锁基于 Zookeeper 实现分布式锁本文采用第一种方案,也就是基于 Redis 的分布式锁实现方案。Redis 实现原创 2021-09-10 10:36:36 · 710 阅读 · 5 评论 -
快速回滚mysql数据
使用binlog快速回滚mysql数据在日常使用mysql时,特殊是在开发环境,经常会有一些憨憨操作,手动去操作数据库,或者又删表导入等操作,除了运维备份mysql,也可以记录binlog的的一些信息,比如在手动操作前记录一下时间点和position,操作结束之后也分别记录一下,这样对于数据会更安全,在开发环境时也可以一波骚操作把数据库搞坏又快速回滚。模拟操作在各种蜜汁操作前,特殊是没有把握的操作,例如各种批量操作,结构更新,和手动执行一些sql时,如果操作失误比如没有加where等。会直接污染数原创 2021-09-29 14:56:29 · 8327 阅读 · 6 评论 -
Join查询联表的数量最大到底不要超过多少,有人说5,有人说6??
前言从今天开始,小怪将使用CSDN社区作为MySQL案例的应用场景,详细剖析MySQL的实现细节。相信博友们都知道CSDN社区个人主页上有一个“关注了”和“关注者”的功能,尤其是“关注者”功能,当你看到消息提醒,又有人关注你啦,你可能会点进关注者列表瞅瞅:咦,今天又有哪位大佬关注我啦!有点小激动,哈哈哈!今天小怪就以“关注者”这个功能为例,看看我们是怎么用SQL实现该功能的,语句背后的执行原理又是怎样的?我们先来看看如何用SQL实现“关注者”功能:SELECT user.user_name,原创 2021-09-28 17:56:34 · 6460 阅读 · 0 评论 -
如何高效地进行大规模数据迁移?
导读我们在做一次系统业务模型重构的时候,往往会遇到把旧模型表中的数据迁移到新模型表中,如果这时候,我们旧表中的数据规模已达到千万级以上,那么,这个从旧表迁移到新表的过程会非常漫长,而业务仍需快速推进,业务方接受不了这么高的迁移成本,此时,开发同学就会想:既然业务不允许停滞,但是,又不得不将大规模的数据迁移新模型表中。那么,为了保证对业务影响最小,更快完成数据迁移,一批插入多少条记录到新表的效率最高呢?今天,我就以用户中心这个系统中的用户表为例,详细讲解一下一条Insert语句的插入过程,从而找出影响原创 2021-09-27 15:45:43 · 1138 阅读 · 0 评论 -
谁说不能使用select *?!
导读我们先来回顾一下交友平台用户表的表结构:CREATE TABLE `user` ( `id` int(11) NOT NULL, `user_id` int(8) DEFAULT NULL COMMENT '用户id', `user_name` varchar(29) DEFAULT NULL COMMENT '用户名', `user_introduction` varchar(498) DEFAULT NULL COMMENT '用户介绍', `sex` tinyint(1)原创 2021-09-27 14:58:39 · 1439 阅读 · 9 评论 -
Mac版mysql忘记密码如何找回
step1:先进入设置,停止mysql的运行step2:进入终端输入:cd /usr/local/mysql/bin/回车后 登录管理员权限 ,输入 sudo su回车后输入以下命令来禁止mysql验证功能 ./mysqld_safe --skip-grant-tables &回车后mysql会自动重启(偏好设置中mysql的状态会变成running)step3:输入命令 ./mysql回车后,输入命令 FLUSH PRIVILEGES;回车后,输入命令 SET PASSWORD原创 2021-09-24 14:39:20 · 498 阅读 · 2 评论 -
Mysql数据库优化一(存储引擎)
前言数据库优化是一个老生常谈的问题,刚入门的小白或者工作N年的光头对这个问题应该都不陌生,你要面试一个中级工程师那么他就想"哥俩好"一样那么粘,面试官肯定会问这个问题,这篇文章我们就和它哥俩好!而且这个问题就是一个送分题,数据库的优化方案基本就是那些,答案也都是固定的,大家只要好好准备这个问题就不会住你,可以在面试中安排面试官,不然就被面试官安排!话不多说下边就针对数据库优化展开讲!数据库设计数据库设计三大范式第一范式1NF:字段原子性第一范式简单的说就是表中的字段是最小不可再分的,我们下边举个例原创 2021-06-03 17:06:10 · 526 阅读 · 2 评论