![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 76
hh6plus
这个作者很懒,什么都没留下…
展开
-
PostgreSQL Explain+查询性能优化
Filter是过滤条件,跟具体的sql有关, 注意sort, sort中应该是有两行,下面的图示中能够看到, 第一行代表对那个键进行排序, 第二行是排序方法(主要有内存排序和磁盘排序,应该避免磁盘排序)和数据大小。且你的数据中有一个递增且连续的字段(注意一定要连续),那么就可以通过翻页前的最后一条数据的id来定位下一页的位置, 或者直接根据分页大小和要跳转的页码直接定位到你要翻页的地方,一般情况下这个字段是主键。rows代表的是输出的总行数,他不是计划节点处理或扫描的行数,而是节点发出的行数。转载 2024-06-22 02:59:39 · 31 阅读 · 0 评论 -
数据库中有多个状态字段的存储决策(bit vs boolean vs integer)
在可以拆分定义时,优先将业务拆分字段定义,可以boolean时优先使用boolean。否则考虑使用integer。或使用bit(但是会带来可读性成本)。摘自StackOverflow,以下为原文。转载 2024-06-18 14:22:14 · 13 阅读 · 1 评论 -
MySQL大小写问题
近日写码,遇到奇怪问题。在MySQL查询“180ML”,查到了"180ml",代码未做判断,导致用Set<String>做difference发现不存在,重新插入时,发生DuplicateKey。经试验,默认varchar是大小写不敏感的,是因为MySQL默认使用_ci校对规则。(table使用的utf8mb4,为了支持特殊字符。通过执行show collation,可以看到表的默...原创 2018-08-15 21:42:17 · 175 阅读 · 0 评论 -
数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器(转)
第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。 水平切分数据库:可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失;原创 2017-03-17 19:53:29 · 492 阅读 · 0 评论 -
先读判空后写的并发问题
近期有业务需求:先读,判断某分类名是否存在,不存在就插入该分类名。将这个流程放到事务里后,就以为万事大吉了。结果用户并发操作时,发生了DuplicateKeyException(门店ID + 分类名有唯一键)。系统排查了一下数据库(MySQL InnoDB)的事务原理后,确认了为什么放到事务里没有解决。mysql的innodb数据库,默认事务配置是repeatable read,只保证了读...原创 2018-10-10 20:08:24 · 863 阅读 · 2 评论