![](https://img-blog.csdnimg.cn/20200412202226501.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Mysql Mongodb Redis Jdbc
文章平均质量分 64
mysql
Knight_AL
这个作者很懒,什么都没留下…
展开
-
postgre数据库清除表数据,保留表结构,并且自增列重新从1自增
与 mysql 稍有不同,postgresql 的自增字段 是通过 序列 sequence来实现的。即可,如果有自增的 id 字段,也会还原回 1。mysql中如果需要清空表,只需要。所以在清空表的时候,还需要还原序列。原创 2024-01-11 16:27:21 · 528 阅读 · 0 评论 -
MySQL中datetime和timestamp的区别
关于datetime和timestamp的选择使用.在满足使用条件的情况下,占据存储空间越少越好,此时选择timestamp比datetime更好.timestamp类型的存储,是以UTC时区来保存的,在显示时会自动将日期数据转换,如果时间的场景对应多个时区,此时选择timestamp比datetime更好.关于日期的使用范围, timestamp类型最大只支持到2038-01-19年,所以如果使用的日期时间较大, 则选择datetime比timestamp更好.原创 2024-01-11 16:22:54 · 580 阅读 · 1 评论 -
PostgreSql中解析JSON字段和解析TEXT中的JSON字段
其实和解析JSON字段一样我们只需要加上::json。查询使用->操作符,查询json中所有顾客作为键。下面使用->>操作获取所有顾客姓名作为值。根据json对象的key查询值。原创 2023-11-09 15:04:46 · 1080 阅读 · 0 评论 -
PostgreSQL--如何计算2个日期的秒数差值
extract函数格式:extract函数是从日期或者时间数值里面抽取子域,比如年、月、日等。source必须是timestamp、time、interval类型的值表达式。field是一个标识符或字符串,是从源数据中的抽取的域。原创 2023-11-09 14:12:11 · 985 阅读 · 0 评论 -
redisTemplate不支持zpopmax,解决方案使用reverseRangeWithScore
在redis客户端可以使用zpopmaxredisTemplate不支持zpopmax。原创 2023-11-08 16:49:22 · 424 阅读 · 0 评论 -
MySQL在线修改表结构-PerconaTookit工具
由于 alter table 线上修改表结构有诸多弊端,但是 PerconaTookit 提供了一个开源的线上修改表结构的工具。在执行前还需要修改下密码认证方式,因为该工具不支持 MySQL8 新的默认认证方式,将认证方式改成低版本的方式。其中一个名为 pt-online-schema-change 的工具可以完成在线修改表结构。pt-online-schema-change 是如何做到不锁表修改表结构的?修改完成之后,会在原来表上增加触发器,新的操作数据增删改查都会同步到新的表中,3.同步执行数据拷贝。原创 2023-10-01 09:27:58 · 255 阅读 · 0 评论 -
The GPG keys listed for the “MySQL 8.0 Community Server“ repository are already installed but they a
这个是由于GPG密钥验证问题引起的。原创 2023-10-01 09:25:35 · 2248 阅读 · 0 评论 -
找redis大key工具rdb_bigkeys
将github.com/cupcake/rdb的项目fork到自己的github账户下,只需要在github上对应项目界面点击fork按钮集合。注释630-634行,然后提交变更,这里我感觉这里的version校验没有任何意义,所以这里接直接注释了,如果你有更好的办法也可以自己改。每列分别为数据库编号,key类型,key名,key大小,元素数量,最大值元素名,元素大小,key过期时间。rdb-bigkeys 在高版本的 rdb文件不能使用,我的redis 6 报错不能分析。将go添加到环境变量。原创 2023-09-02 15:52:40 · 1455 阅读 · 0 评论 -
Redis:IO多路复用深度解析
多路复用快的原因在于,操作系统提供了这样的系统调用,使得原来的 while 循环里多次系统调用,变成了一次系统调用 + 内核层遍历这些文件描述符。所谓 I/O 多路复用机制,就是说通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或写就绪),能够通知程序进行相应的读写操作。这种机制的使用需要 select 、 poll 、 epoll 来配合。多个连接共用一个阻塞对象,应用程序只需要在一个阻塞对象上等待,无需阻塞等待所有连接。原创 2023-07-06 12:09:39 · 3128 阅读 · 2 评论 -
BIO、NIO、AIO的区别?
tomcat7之前就是用BIO多线程来解决多连接。原创 2023-07-06 10:59:15 · 170 阅读 · 0 评论 -
Redis分布式锁改造获取sku信息
对这段代码进行改造(mysql改造成redis分布式锁)首先选中方法里面的代码ctrl+alt+m抽取出来。原创 2023-07-05 16:23:07 · 210 阅读 · 0 评论 -
redolog与binlog为什么需要两阶段提交?
然后你会发现,如果需要用这个 binlog 来恢复临时库的话,由于这个语句的 binlog 丢失,这个临时库就会少了这一次更新,恢复出来的这一行 c 的值就是 0,与原库的值不同。如果在图中时刻 A 的地方,也就是写入 redo log 处于 prepare 阶段之后、写 binlog 之前,发生了崩溃(crash),由于此时 binlog 还没写,redo log 也还没提交,所以崩溃恢复的时候,这个事务会回滚。如果 redo log 里面的事务是完整的,也就是已经有了 commit 标识,则直接提交;原创 2023-06-10 09:50:26 · 1474 阅读 · 0 评论 -
Mysql常见的索引模型
首先我们要明确的一点是,这棵树是存在于磁盘中,每次我们都要从磁盘中读取出相应的节点,然而二叉搜索树的节点在文件中是随机存放的,所以可能读取一个节点就需要一个磁盘IO,恰恰二叉搜索树都会比较高,如一棵一百万个元素的平衡二叉树就有十几层高度了,也就是大部分情况下检索一次数据就需要十几次磁盘IO,这个代价太高了,所以一般二叉搜索树也不会被用来作索引。B-Tree的查找过程是,因为每个页中的节点都是有序的,所以在每个页中都可以使用二分查找,而B-Tree的高度又会很低,所以查找效率会很快。原创 2023-05-20 13:38:40 · 724 阅读 · 0 评论 -
执行SQL响应比较慢,你有哪些排查思路?
如果发现慢查询的SQL没有命中索引,可以尝试去优化这些SQL语句,保证SQL走索引执行。在流量比较大的场景中,可以增加从库来提高数据库的负载能力,从而提升数据库的总体性能。这种情况下,除了对数据库本身的调整以外,还可以增加缓存。将查询比较频繁的热点数据预存到缓存当中,比如Redis、MongoDB、ES等,以此来缓解数据的压力,从而提高数据库的响应速度。首先,可以打开MySQL的慢查询日志,收集一段时间的慢查询日志内容,然后找出耗时最长的SQL语句,对这些SQL语句进行分析。原创 2023-05-15 14:49:40 · 1284 阅读 · 0 评论 -
MySQL的隐式转换
MySQL查询中,当字符串和数字做比较时,会触发隐式类型转换,转换规则是将字符串转换成数字。当索引字段是字符串类型,输入参数是数值类型时,会将字段转换成数值类型再进行查找,也就是对索引字段做了函数操作,破坏了索引的有序性,因此无法使用索引。当索引字段是数值类型,输参数是字符串类型时,会将输入参数转换成数值类型再进行查找,对等号后面的输入参数进行函数操作,并不影响索引字段的有序性,因此可以使用索引。原创 2023-05-15 14:09:57 · 849 阅读 · 0 评论 -
Mysql_行锁、临键锁、间隙锁的理解
行锁、临键锁、间隙锁只是表示锁定数据的范围,最终目的是为了解决幻读的问题。而临键锁相当于行锁+间隙锁,因此当我们使用非唯一索引进行精准匹配的时候,会默认加临键锁,因为它需要锁定匹配的这一行数据,还需要锁定这一行数据对应的左开右闭区间。原创 2023-05-15 13:38:02 · 2034 阅读 · 0 评论 -
mysql使用innodb引擎,请简述mysql索引的最左前缀如何优化orderby语句。
在选择组合索引的时候,过滤性最好的字段在索引字段顺序中,位置越靠前越好。对于单键索引,尽量选择过滤性更好的索引(例如:手机号,邮件,身份证)组合索引出现范围查询时,尽量把这个字段放在索引次序的最后面。选择组合索引时,尽量包含where中更多字段的索引。尽量避免造成索引失效的情况。原创 2023-05-04 14:11:15 · 375 阅读 · 0 评论 -
Mysql索引优化分析_explain查看执行计划
varchr(10)变长字段且允许NULL = 10 * ( character set:utf8=3,gbk=2,latin1=1)+1(NULL)+2(变长字段)key_len表示索引使用的字节数,根据这个值可以判断索引的使用情况,特别是在组合索引的时候,判断该索引有多少部分被使用到非常重要。key_len=age的字节长度+deptid的字节长度+name的字节长度=(4+1) + (4+1) +(20*3+2+1)=73。一般来说,得保证查询至少达到range级别,最好能达到ref。原创 2023-04-09 11:10:31 · 536 阅读 · 0 评论 -
Mysql查询优化_排序、分组优化
创建索引创建索引增加limit过滤条件,使用上索引了。ORDER BY子句,尽量使用Index方式排序,避免使用FileSort方式排序双路排序:两次io单路排序:一次io 但是需要调整sort_buffer_size 的容量,避免发生多次io!原创 2023-04-08 16:02:47 · 545 阅读 · 0 评论 -
MySQL 日志:undo log、redo log、binlog 有什么用?
1.redo log是InnoDB存储引擎的一种日志,主要作用是崩溃恢复,有三种刷盘策略,有innodb_flush_log_at_trx_commit 参数控制,推荐设置成2。2.undo log是InnoDB存储引擎的一种日志,主要作用是回滚。3.binlog是MySQL Server层的一种日志,主要作用是归档。原创 2023-04-07 10:48:14 · 1527 阅读 · 0 评论 -
MyCat实现分库分表
将字典表或者符合字典表特性的一些表定义为全局表,则从另外一个方面,很好的解决了数据 JOIN 的难题。MySQL单表存储数据条数是有瓶颈的,单表达到1000万条数据就达到了瓶颈,会影响查询效率,需要进行水平拆分(分表)进行优化。为orders表设置数据节点为dn1、dn2,并指定分片规则为mod_rule(自定义的名字)查询订单注重时效,历史订单被查询的次数少,如此分片会造成一个节点访问多,一个访问少,不平均。分库的原则:有紧密关联关系的表应该在一个库里,相互没有关联关系的表可以分到不同的库里。原创 2023-04-06 09:54:47 · 3416 阅读 · 0 评论 -
MyCat安装启动
MyCAT Server startup successfully. see logs in logs/mycat.log 表示启动成功!3)为了能看到读写分离的效果,把balance设置成2,会在两个主机间切换查询 (2只限于测试,生产环境请选择1或3)①控制台启动 :去mycat/bin 目录下执行 ./mycat console。②后台启动 :去mycat/bin 目录下 ./mycat start。为了能第一时间看到启动日志,方便定位问题,我们选择①控制台启动。原创 2023-04-05 13:17:32 · 849 阅读 · 0 评论 -
MyCat概述
Mycat是数据库中间件。原创 2023-04-05 13:16:49 · 793 阅读 · 0 评论 -
MySQL 主从复制原理及配置
从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后SQL线程会读取relay-log日志的内容并应用到从服务器,从而使从服务器和主服务器的数据保持一致!5) 可能是uuid 一致(master,slave uuid) vim /var/lib/mysql/auto.cnf 下更改uuid,重启服务。3.slave重做中继日志中的事件,将改变应用到自己的数据库中。2.slave将master的binary log events拷贝到它的中继日志(relay log);原创 2023-04-03 08:48:54 · 285 阅读 · 0 评论 -
CentOS7系统安装MySQL 5.7
另外 --initialize 选项默认以“安全”模式来初始化,则会为 root 用户生成一个密码并将该密码标记为过期,登录后你需要设置一个新的密码。执行rpm -qa|grep -i mysql命令,查看是否安装成功,需要增加 -i 不用去区分大小写,否则搜索不到。执行 mysqladmin --version命令,类似java -version如果打出消息,即为成功。不需要一个一个下载了。通过 mysql -uroot -p进行登录,在Enter password:录入初始化密码。原创 2023-04-03 08:46:07 · 507 阅读 · 0 评论 -
Mysql查询截取分析_慢查询日志
1.在生产环境中,如果要手工分析日志,查找、分析SQL,显然是个体力活,MySQL提供了日志分析工具mysqldumpslow。2.开启:set global slow_query_log=1;只对窗口生效,重启服务失效。默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的。全局变量设置,对所有客户端有效。但,必须是设置后进行登录的客户端。3.慢查询日志记录long_query_time时间。对当前会话连接立即生效,对其他客户端无效。原创 2023-04-02 11:41:26 · 345 阅读 · 0 评论 -
Mysql查询优化_覆盖索引优化
简单说就是,select 到 from 之间查询的列使用了索引!select * from tName 不建议使用*使用覆盖索引后禁止使用select *禁止查询与业务无关字段尽量使用覆盖索引。原创 2023-03-27 20:32:34 · 68 阅读 · 0 评论 -
Mysql查询优化_子查询优化
Mysql查询优化_子查询优化。原创 2023-03-26 11:00:57 · 52 阅读 · 0 评论 -
Mysql查询优化_关联查询优化
3.inner join 时,mysql会自动将小结果集的表选为驱动表。选择相信mysql优化策略。2.left join 时,选择小表作为驱动表,大表作为被驱动表。4.能够直接多表关联的尽量直接关联,不用子查询。1.保证被驱动表的join字段被索引。原创 2023-03-26 10:57:44 · 56 阅读 · 0 评论 -
Mysql查询优化_单表使用索引及常见索引失效
结论:过滤条件要使用索引必须按照索引建立时的顺序,依次满足,一旦跳过某个字段,索引后面的字段都无法被使用。结论:计算、函数导致索引失效建议:将可能做范围查询的字段的索引顺序放在最后。原创 2023-03-25 12:36:46 · 494 阅读 · 0 评论 -
MySQL架构_存储引擎简介
大于等于5.5之后,默认采用InnoDB引擎。InnoDB是MySQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(Commit)和回滚(Rollback)。除了增加和查询外,还需要更新,删除操作,那么,应优选选择InnoDB存储引擎。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。原创 2023-03-24 11:01:59 · 1515 阅读 · 0 评论 -
Mysql中BTree和B+Tree
为啥要使用B+Tree,而不是用普通二叉树和AVL平衡二叉树呢B-Tree树即B树,B即Balanced,平衡的意思。B-Tree即B树,Balance Tree,平衡树。2-3树是最简单的B树结构。B树的阶:节点的最多子节点个数。比如2-3树的阶是3,2-3-4树的阶是4。B树通过重新组织节点,降低树的高度,并且减少IO读写次数来提升效率。关键字集合分布在整颗树中,即叶子节点和非叶子节点都存放数据。原创 2023-03-24 11:02:44 · 2130 阅读 · 0 评论 -
MySQL架构_查询计划
执行编号4时,比执行编号3时少了很多信息,从下面截图中可以看出查询语句直接从缓存中获取数据;如果对数据库表进行 insert ,update ,delete 这个时候,缓存会失效!1)修改配置文件/etc/my.cnf,先开启查询缓存。了解查询语句底层执行的过程:查看是否开启计划。注意:SQL必须是一致的,否则,不能命中缓存。虽然查询结果一致,但并没有命中缓存。2)再开启查询执行计划。4)显示最近执行的语句。原创 2023-03-23 15:04:13 · 596 阅读 · 0 评论 -
MySQL架构_杂项配置sql_mode
sql_mode设置是否允许一些非法操作,比如允许一些非法数据的插入,数据查询等。在生产环境必须将这个值设置为严格模式,所以开发、测试、生产环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题。mysql 5.7的sql_mode=有ONLY_FULL_GROUP_BY说明:在查询的时候,使用group by要遵行一定的规则综上所述:使用group by进行分组的时候,查询项目,要么是组函数,要么是分组的字段。原创 2023-03-22 16:26:23 · 299 阅读 · 0 评论 -
MySQL架构_用户与权限管理
2.给li4用户用本地命令行方式下,授予donglindb这个库下的所有表的插删改查的权限。select_priv(查询) insert_priv(插入) drop_priv(删除)3.授予通过网络方式登录的joe用户 ,对所有库所有表的全部权限,密码设为123123.表示创建名称为zhang3的用户,密码设为123123;select_priv , insert_priv等。所有通过user表的修改,必须用该命令才能生效。3.收回mysql库下的所有表的插删改查权限。查看某用户的全局权限。原创 2023-03-21 11:17:08 · 221 阅读 · 0 评论 -
Redis案例实战:淘宝购物分享短连接推广
新浪使用短链接主要是因为微博只允许发144 字,如果链接地址太长的话,那么发送的字数将大大减少。短链接的主要职责就是把原始链接很长的地址压缩成只有6 个字母的短链接地址,当我们点击这6 个字母的链接后,我们又可以跳转到原始的真实链接地址。长短链接映射的要求,需要Redis存在hash结构里面。http传输好了很多,有助于带宽节约和高并发。防止尾巴参数泄密,不安全。原创 2023-03-18 11:34:20 · 420 阅读 · 0 评论 -
Redis案例实战_微信抢红包
100÷10 X2 = 20, 所以第一个人的随机范围是(0,20 ),平均可以抢到10元。90÷9 X2 = 20, 所以第二个人的随机范围同样是(0,20 ),平均可以抢到10元。80÷8 X2 = 20, 所以第三个人的随机范围同样是(0,20 ),平均可以抢到10元。不可以,set会去重,举个例子100元的红包,分成4个,如果分成[10,20,20,15,35],那么就会变成4个,不满足。这个公式,保证了每次随机金额的平均值是相等的,不会因为抢红包的先后顺序而造成不公平。原创 2023-03-16 21:02:36 · 670 阅读 · 0 评论 -
Redis中Key出现乱码
我使用的是RedisTemplate,而RedisTemplate会出现编码问题,需要自行配置,如果不想配置,可以使用StringRedisTemplate,因为StringRedisTemplate的源码中是有帮我们配置的,因此使用StringRedisTemplate即可完美解决“乱码”问题。原创 2023-03-16 17:49:44 · 45 阅读 · 0 评论 -
布隆过滤器BloomFilter
优点高效地插入和查询,占用空间少缺点不能删除元素。因为删掉元素会导致误判率增加,因为hash冲突同一个位置可能存的东西是多个共有的,你删除一个元素的同时可能也把其它的删除了。存在误判,不同的数据可能出来相同的hash值。原创 2023-03-16 10:04:46 · 451 阅读 · 0 评论 -
深入理解redis_缓存双写一致性之更新策略探讨
目录一、缓存双写一致性,谈谈你的理解二、缓存按照操作来分,有细分2种1.只读缓存2.读写缓存3.数据库和缓存一致性的几种更新策略3.1 3种更新策略3.1.1 先更新数据库,再更新缓存3.1.2 先删除缓存,再更新数据库3.1.2.1 异常问题3.1.2.2 解决方案3.1.3 先更新数据库,再删除缓存3.1.3.1 异常问题3.1.3.2 业务指导思想3.1.3.3 解决方案3.1.4 不许问4.小总结一、缓存双写一致性,谈谈你的理解如果redis中有数据,需要和数据库中的值相同如果redis中无数原创 2023-03-15 12:01:35 · 438 阅读 · 0 评论