![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 52
thunder-1
像光一样
展开
-
高并发下如何保证接口的幂等性?
一、前言接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考。不知道你有没有遇到过这些场景:1、有时我们在填写某些form表单时,保存按钮不小心快速点了两次,表中竟然产生了两条重复的数据,只是id不一样。2、我们在项目中为了解决接口超时问题,通常会引入了重试机制。第一次请求接口超时了,请求方没能及时获取返回结果(此时有可能已经成功了),为了避免返回错误的结果(这种情况不可能直接返回失败吧?),转载 2021-04-01 10:52:31 · 114 阅读 · 0 评论 -
mysql count可以按条件统计
有时,我们需要统计统计总数,符合不同条件的统计总数,我们就可以通过count函数携带条件的统计方式。常规用法select COUNT(*) from user group by id;有条件count(),关键是不参与统计的返回 nullselect COUNT(IF(id > 0 , id, null)) from user group by id;...原创 2021-03-31 16:51:05 · 1003 阅读 · 0 评论 -
常见索引原则有
1.选择唯一性索引,唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。2.为经常需要排序、分组和联合操作的字段建立索引.3.为常作为查询条件的字段建立索引。4.限制索引的数目,越多的索引,会使更新表变得很浪费时间。5.尽量使用数据量少的索引,如果索引的值很长,那么查询的速度会受到影响。6.尽量使用前缀来索引,如果索引字段的值很长,最好使用值的前缀来索引。7.删除不再使用或者很少使用的索引8. 最左前缀匹配原则,非常重要的原则。9. 尽量选择区分度高的列作为索引,区分度的公式是表示原创 2021-03-09 10:44:42 · 1158 阅读 · 0 评论 -
Java 中的悲观锁和乐观锁的实现
乐观锁顾名思义就是在操作时很乐观,这数据只有我在用,我先尽管用,最后发现不行时就回滚。悲观锁在操作时很悲观,生怕数据被其他人更新掉,我就先将其先锁住,让别人用不了,我操作完成后再释放掉。悲观锁需要数据库级别上的的实现,程序中是做不到的,如果在长事务环境中,数据会一直被锁住,导致并发性能大大地降低。锁(locking)业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算...转载 2020-05-03 14:39:13 · 465 阅读 · 0 评论 -
mysql varchar(N)长度如何选择
varchar 存储分为两部分:varchar字段长度 = 字符串长度值 + 实际数据长度 N。字符串长度值视实际数据长度,需占用 1 或 2 个字节存储。因此我们得出:当实际数据长度 <= 255 时,varchar字段长度 = 1 + N;当实际数据长度 > 255 时, varchar字段长度 = 2 + N;varchar主要根据字段实际使用的长度来分配存储空间在...原创 2020-05-02 11:35:44 · 21652 阅读 · 0 评论 -
INT(10)与INT(11)的区别
你是不是以为INT(10) 会比 INT(11)省空间!!!那你就大错特错了首先看一下定义:int(M) M指示最大显示宽度。显示宽度与存储空间大小或类型包含的值的范围无关,只是显示宽度,那有啥用呢?其实主要用于固定其显示长度,例如:时间戳是十位,可以定义int(10),让其固定10位md5密码是32位,可以定义varchar(32)其实int(10)和int(11)占用的空间一样,只...原创 2020-05-02 10:07:44 · 1757 阅读 · 0 评论 -
springboot+mysqlrouter+mybatis+mysql实现读写分离架构完全技术方案
1、安装Mysql8https://blog.csdn.net/atongmu2017/article/details/90610444解决: You are not allowed to create a user with GRANThttps://blog.csdn.net/mxskymx/article/details/887650722、配置一主多从数据库架构https://b...原创 2020-04-25 23:18:32 · 1774 阅读 · 0 评论 -
windows同时安装多个mysql8.0服务
推荐地址:https://blog.csdn.net/m0_37890289/article/details/80003994配置文件需要修改一下:1、配置文件等号前后不能有空格,否则无法初始化和启动程序2、如果安装多个版本的mysql,同时启动可能会失败,可以先知启动一个3、字段注释乱码,可能是因为navicat版本问题导致,升级navicat版本即可。[mysql] # 设...转载 2019-11-18 13:06:27 · 523 阅读 · 0 评论 -
数据库连接池技术的原理
这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。一.早期我们怎么进行数据库操作1.原理:一般来说,java应用程序访问数据库的过程是:①装载数据库驱动程序;②通过jdbc建立数据库连接;③访问数据库,执行sql语句;④断开数据库连接。2.代码 :// 查询所有用户Public void FindAllUsers()...转载 2019-11-06 17:28:16 · 132 阅读 · 0 评论 -
mysql存储过程和使用场景
一、什么是存储过程简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,有点类似于应用程序的一个功能函数。存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用;二、存储过程特性有输入输出参数,可以声明变量,有if/else, case,while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能;...转载 2019-10-24 17:11:02 · 2924 阅读 · 0 评论 -
hibernate多表关联查询
方式一:建立视图像查询表一样查询视图,给视图建立持久化类。方式二:建立POJO之间的互相引用,配置关联映射在*.hbm或Annotation中配置"subclass"属性,对应三种类型的关联方式one-to-one/many-to-one/one-to-many.需要谨慎的使用Lazy和fetch关键字,避免不必要的查询,或者已经关闭Session后再查询。方式三:直接查询,将结果保存在...原创 2019-10-10 09:58:17 · 1431 阅读 · 0 评论 -
excel/csv导出百万级数据设计思路
1、业务场景业务部门因为运营的需要经常需要导出大量的数据,为了避免导出数据无反应,通常采用分页导出的方法,但是对于百万级数据,业务部门需要下载几百次,再把数据合并起来极为不便,因此就产生了导出百万级数据的需求。2、开发百万级导出数据遇到的问题1、数据量太大导致内存溢出2、导出时间过长,一直等待3、网络不稳定需要重新导4、Excel2007开始的版本最大行数是1048576行都限制了百...原创 2019-10-02 17:45:55 · 1306 阅读 · 0 评论 -
mysql多次join同一张表的处理
场景:商品表中有不同的商品分类id,一级商品分类id ,二级商品分类id,三级商品分类id商品分类表中有分类id和分类名称两张表要多次关联查询获取不同等级的分类名称如果直接join是不行的,因为分类名称会重名,但是只要给商品分类表起个别名就可以解决这个问题。select gc.goods_name,c.category_name,c1.category_name,c2.catego...原创 2019-07-25 11:11:00 · 5527 阅读 · 0 评论 -
Mysql字符串截取总结:left()、right()、substring()、substring_index()
在实际的项目开发中有时会有对数据库某字段截取部分的需求,这种场景有时直接通过数据库操作来实现比通过代码实现要更方便快捷些,mysql有很多字符串函数可以用来处理这些需求,如Mysql字符串截取总结:left()、right()、substring()、substring_index()。一.从左开始截取字符串用法:left(str, length),即:left(被截取字符串, 截取长度)S...转载 2019-07-17 12:17:45 · 159 阅读 · 0 评论 -
linux mysql自动备份压缩最近7天的文件脚本
#!/bin/sh #source /etc/profilePATH=$PATHcd /data/mysqlbak/bakmysqlecho "You are in bakmysql directory"mv bakmysql* /data/mysqlbak/bakmysqlold/echo "Old databases are moved to bakmysqlold f...原创 2019-06-30 10:06:20 · 253 阅读 · 0 评论 -
两表左链接分组求和查询sql语句
select * from (select member_id,member_name from tb_member where store_id =1) a left join (SELECT buyer_id,count(*) order_num,sum(order_amount) order_amount FROM tb_orders wher store_id = 1 ...原创 2019-06-16 09:09:37 · 2945 阅读 · 0 评论 -
mysql取得数据库所有表名和字段注释
1、取字段注释Select COLUMN_NAME 列名, DATA_TYPE 字段类型, COLUMN_COMMENT 字段注释from INFORMATION_SCHEMA.COLUMNSWhere table_name = 'companies'##表名AND table_schema = 'testhuicard'##数据库名AND column_name LIKE 'c_nam...转载 2019-05-31 16:42:46 · 2313 阅读 · 0 评论