MySQL
文章平均质量分 89
林老师带你学编程
www.wolzq.com
展开
-
亿级大表如何修改表结构【MySQL】
一、问题背景随着数据库数据量进一步增加,最大的表目前已经达到10亿+了,虽然已经进行的数据库的分库分表(采用阿里云的polardb),但是大表要改表结构的时候,还是会出现死锁的情况,系统会收到严重影响。二、深入讨论那我们大表该如何修改表结构呢?网络搜索了一圈,基本都围绕了两种方法进行:第一种是在用户访问量少的时间段,进行表结构修改。第二种是采用copy替换原表的方法。其实相对上述两种方式,还有一种方法可以从业务上面处理,就是在设计表结构的时候,根据现有业务和未来规划的业务,提前预留足够多原创 2021-10-26 10:53:23 · 2404 阅读 · 0 评论 -
MySQL如何破解limit 100w+的分页查询
一、问题背景我们在业务开发的时候,经常会遇到table列表的需求,这也是最基本的需求之一。大多数都是根据输入条件查询对应数据,然后对数据进行分页显示。数据量小的时候基本没啥问题,但是如果数据量在千万级别以上,这个时候limit就非常慢了。二、实验数据我们以一个大概4亿的表来进行测试,实验表数据如下所示:select count(1)from order_info数据量:441182739MYSQL:配置:64核256GB版本:MySQL 5.7三、优化前我原创 2021-08-19 18:27:24 · 742 阅读 · 2 评论 -
MySQL中max_execution_time引发的血案
一、场景问题今天MySQL存储节点突然收到cpu持续100%的报警,持续时间长达数个小时。在控制台中通过show processlist查看当前进程,发现很多一模一样的SQL一直在运行,执行时间都超过数个小时。二、疑问分析一般对用户而言,都会有一个超时时间,接口不可能无限等待,如果一直等待体验也不好。所以都会设置一个超时时间,不管是前端请求的超时时间,亦或者是nginx的请求超时时间。但大家思考过这样一个场景没,当http的请求断开,那接口中涉及到的SQL是会继续执行,还是会断开链接呢?三、原创 2021-05-07 21:51:31 · 4031 阅读 · 4 评论 -
如何优雅的解决n 1查询!!!
我们在写代码的时候非常忌讳出现n+1次查询,这就意味的你的循环有多少次,就会查询多少次数据库,这是很恐怖的场景。因为每次服务调用mysql查询的时候,都是一件很耗费性能的操作,下面我们举个例子,来说说n+1的触发场景及解决方案。业务需求需要查询指定用户的订单详细信息,详细信息不仅仅包含订单本身的信息,还包含其它信息。这个时候童鞋们往往会采用,如下所示的方式进行数据获取。 /**...原创 2019-10-22 22:44:20 · 578 阅读 · 0 评论 -
史上最简单的druid开启AOP事务教程
上一篇文章我们介绍了springboot如何集成druid。今天在这个基础上面,增加AOP切面开启方法。想学习分布式、微服务、JVM、多线程、架构、java、python的童鞋,千万不要扫码,否则后果自负~1.首先在application.yml中增加AOP相关配置:spring: datasource: druid: type: com.alibaba....原创 2019-04-11 17:42:34 · 2886 阅读 · 0 评论 -
常用数据库连接池 (DBCP、c3p0、Druid) 配置说明
1. 引言1.1 定义数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。想学习分布式、微服务、JVM、多线程、架构、java、python的童鞋,千万不要扫码,否则后果自负~数据库连接池负责分配、管理和释放数据库连接,它允许...转载 2019-04-11 17:43:54 · 393 阅读 · 0 评论 -
高并发下Mysql主从延迟处理方案
产生原因一般做数据库读写分离的时候,都是由于数据库扛不住用户的大量请求,导致数据库出现瓶颈,为了增大数据库的吞吐量而做的。那么当一个请求往主库里面写的时候,同时会同步一份数据写到从库中。如果此时从库处于非常繁忙的状态,就会出现主库的数据没法及时同步到从库,从库无法查询到更新的数据。就产生了主从延迟。治标方案一、针对网上的很多方案不外乎就是什么更改优化数据库配置,提升从库数据库服务器...转载 2019-05-19 20:57:56 · 2212 阅读 · 0 评论 -
mysql由于临时表导致IO过高的性能优化过程分享
线上mysql数据库爆出一个慢查询,DBA观察发现,查询时服务器IO飙升,IO占用率达到100%, 执行时间长达7s左右。SQL语句如下:SELECT DISTINCT g.*, cp.name AS cp_name, c.name AS category_name, t.name AS type_name FROMgm_game g LEFT JOIN gm_cp cp ON cp....转载 2019-06-09 20:54:49 · 1951 阅读 · 0 评论 -
Mybatis中自定义实例化SqlSessionFactoryBean
现在SpringBoot基本成为开发的标配,如果你上司让你搭建一个SpringBoot,然后集成Mybatis+Druid,你可以能百度几下,卡卡就搭建完毕了。现在项目基本都会使用连接池技术,市面上的连接池有很多,比如:DBCP、c3p0、Druid等,今天我们重点介绍Druid连接池。application.yml配置文件如下所示:spring: #数据库配置 data...原创 2019-07-22 21:37:03 · 8507 阅读 · 0 评论 -
Mysql索引使用的正确姿势
今天给大家简单的介绍一下mysql的索引用法,像在我们日常业务开发中,最核心的其实就是写SQL命令,但是你写的SQL真的用到索引了吗?索引实现原理mysql数据库索引实现是在存储引擎中完成的,今天主要以InnoDB存储引擎为例给大家介绍一下。InnoDB存储引擎索引的实现采用B+树数据结构,今天我们主要讲应用,如果想要深究原理的童鞋,可以自己研究研究。索引失效索引失效的场景,基本属...原创 2019-08-18 21:04:49 · 646 阅读 · 0 评论 -
史上最简单的springboot整合druid教程
一、什么是druid阿里出品,淘宝和支付宝专用数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser。想学习分布式、微服务、JVM、多线程、架构、java、python的童鞋,千万不要扫码,否则后果自负~二、druid优势支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Post...原创 2019-04-11 17:36:02 · 824 阅读 · 0 评论 -
MySQL隔离级别
脏读:事务A读取了事务B未commit的数据,然后B回滚操作,那么A读取到的数据是脏数据想学习分布式、微服务、JVM、多线程、架构、java、python的童鞋,千万不要扫码,否则后果自负~不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。幻读:第一个事务对一个表中的数据进行了修...转载 2019-03-26 15:34:37 · 340 阅读 · 0 评论 -
【MYSQL坑】接口突然全部不行,原因竟然是它
今天发生了一件很奇怪的时候,上午的时候项目还好好的,所有接口都没报错。突然吃完饭回来上班的时候,发现接口都返回500错误,所有功能都不能用了,惊的我一身冷汗。火速的查看ELK日志之后发现都是以下的错误:错误SQL语句:SELECT g.pic, g.thumbnail_img as thumbnailImg, g.id, g.team_id AS teamId, g.active_id A...原创 2018-07-22 20:10:58 · 734 阅读 · 0 评论 -
MySQL数据库系列之数据库设计原则
MySQL中数据设计原则:1.一般情况下,应该尽量使用可以正确存储数据的最小数据类型。数据类型不一样,存储的执行效率也不一样。最好使用适度的整型数据类型,例如int之类的数据,这样在做查询或者字段排序的时候速度是最快的。2.尽量避免NULL值的时候,因为这样会增加数据库处理的开销。但是也要考虑实际情况,不要一味的为了避免空值而全部设置为not null,具体的设置情况要根据项目的具体业原创 2016-07-14 12:31:37 · 2570 阅读 · 0 评论 -
MySQL数据库系列之建立高性能的索引
如何在MYSQL中建立高性能的索引1.对长字符字段建立前缀索引。这样可以使索引的维护更加方便,节约索引所占空间和提高索引效率。2.当有多个索引的时候,把选择性高的放在前面,选择性低的放在后面,这样做可以提高索引效率。3.聚簇索引要按主键顺序插入,而不是使用UUID随机插入。因为在那种情况下不仅索引的空间会变大,而且索引的速度也会有明显的下降。4.使用覆盖索引实现非全部数据的查询原创 2016-07-14 16:48:54 · 967 阅读 · 0 评论 -
安装mysql Install/Remove of the Service Denied!错误的解决办法
在windos 的cmd下安装mysql在mysql的bin目录下面执行: mysqld --install报错:信息如下:Install/Remove of the Service Denied 解决办法:打开cmd.exe程序的时候选择“用管理员身份打开”。原文链接:点击打开链接转载 2016-07-18 09:05:57 · 1181 阅读 · 0 评论 -
如何在数据库中存储一棵树
树形结构的数据在项目开发中比较常见,比如比较典型的是论坛主题留言。每一个主题(节点)可以有n个留言(子节点)。这些留言又可以有自己的留言。因此这种结构就是一颗树。本文讨论的是数据库中如何存储这种树形结构。假设有如下一棵树:方法一注意:本例中的数据库是SQLite,因此SQL语句只对SQLite有效,其他数据库可以参考该写法。要存储于数据库中,最简单直接的方法,就是存储每个元转载 2016-10-09 17:26:05 · 1756 阅读 · 0 评论 -
SQL Error: 1064, SQLState: 42000错误
在MySQL 中,下表中的字显式被保留。其中大多数字进制被标准SQL 用作列名和/ 或表名( 例如,GROUP ) 。少数被保留了,因为MySQL 需要它们,( 目前) 使用yacc 解析程序。保留字 被引起来后可以用作识别符。你不小心使用了下面的关键字 那么就会报这个错误“SQL Error: 1064, SQLState: 42000错误”转载 2016-09-22 11:42:02 · 5335 阅读 · 1 评论 -
MYSQL数据库设计之字段选择原则
今天给大家介绍一下数据库设计过程中字段的选择原则,也就是什么时候用int、什么时候用varchar、什么时候用char等等之类的。关于字段的选择其实很多地方都有进行详细的介绍,我这里只写一下我在使用过程中的心得感受。如果想要全面的了解的话,大家可以去看高性能MYSQL这一本书籍,里面有一章节介绍的特别全面,基本涉及MYSQL中全部的字段的介绍。我这里给大家介绍的就一些常用的字段,例如:int、fl...原创 2016-10-11 21:33:29 · 8428 阅读 · 0 评论 -
[MySQL]数据库主键设计之思考
数据库主键设计之思考一1.是否要采用GUID作为主键用GUID作主键有它的优势与不足.优势是GUID具有唯一性,在任何情况下,可以产生全球唯一的值.这是GUID 最大的优势,也方便数据导入,比如要求从另一个系统中把数据导入进来,那么,不用担心,导入时,会导致主键冲突.不足是GUID值太复杂.不易记忆,因为 有时,难免我们会用记录的方式,来进行记录判断.而且数据太长,影响数据库效率.GUID的产生不...转载 2016-10-21 11:02:30 · 4644 阅读 · 0 评论 -
window系统下面实现mysql主从数据库同步
今天给大家介绍一下window系统下mysql如何实现主从同步操作,首先得需要安装两台mysql服务器,我在这里浪费了相当多的时间因为刚开始我想着是在window系统下面安装两个版本不同的mysql数据库,然后改端口就可以实现了。可是一直只能启动一个mysql服务,另一个一直启动不了,所以到最后就不了了之了。后来想着在阿里云上面新建一个mysql服务器,本地新建一个服务器,然后通过这两个进原创 2017-06-21 18:46:10 · 3066 阅读 · 0 评论 -
利用mycat实现mysql读写分离
实现mysql读写分离的工具有很多种,我这里就介绍mycat这一种方式。其它的大家有兴趣可以自己去了解。第一步:首先就是mycat的安装:这个地址就可以下载安装包:https://github.com/MyCATApache/Mycat-download/tree/master/1.6-RELEASE。下载完之后,就进行解压到系统相应目录,然后点击wrapper-window-x86-32原创 2017-06-27 18:24:03 · 1226 阅读 · 0 评论 -
Mysql中的Cascade,NO ACTION,Restrict,SET NULL
MySQL中Cascade,NO ACTION,Restrict,SET NULL介绍转载 2016-04-11 21:20:52 · 765 阅读 · 0 评论