随笔分类 - 数据库
mysql数据库相关
摘要:自上而下,最小成本实现最大的收益。 盗图: 1、从业务入手进行调优 ①、部分冗余减少表关联 ②、根据业务设计表,覆盖索引减少回表操作等 2、SQL优化,索引优化 通过explain命令,查看执行计划执 ①、type:表示表的连接类型 阿里开发手册禁止type小于range,也就是最低标准是范围查找。
阅读全文
摘要:sql执行过程 注:8.0版本mysql已经去掉了缓存功能。 1、未命中缓存 服务器连接->查询缓存->解析器(sql语法校验、生成语法树等)->查询优化器->执行计划->查询执行引擎->访问磁盘文件 2、命中缓存 服务器连接->查询缓存-查询执行引擎->访问磁盘文件 索引 索引是帮助Mysql高效
阅读全文
摘要:说明一点,大家都知道Mysql有一个联合索引最左原则,但是经过测试发现。 有主键,的联合主键没有遵循最左原则: 可能会走到联合索引的,为什么说可能,MYSQL的执行计划和查询的实际执行过程并不完全吻合,比如你数据库数据量很少,可能直接全量遍历速度更快,就不走索引了。 有id主键,不走联合索引 只有索
阅读全文
摘要:参见这个博客 https://www.cnblogs.com/zhoujinyi/archive/2012/10/17/2726462.html 总结: null不占用内存空间,是一个标志位判断。
阅读全文
摘要:mysql数据库innerdb存储引擎 隔离级别为默认可重复度,死锁需要两个条件 1、必须有两个事务同时存在 2、两个事务同时更新两条相同的数据,更新顺序完全相反。 可以理解为,两个事物,彼此等待加锁数据是两事物已上锁的数据。
阅读全文
摘要:1、事务的隔离级别 1、读未提交 2、读已提交 3、可重复读 4、串行化 隔离性引发的并发问题 脏读:读了未提交,读取到未提交的数据。 不可重复读:读了已提交。同一事务两次读取结果不一致。 幻读:操作其他事物插入的数据报错,同一事物两次读取数据不一致。可重复读隔离级别,幻读,并不是说两次读取获取的结
阅读全文
摘要:offset参数较高时,查询效率低 mysql处理逻辑如下图: 当页码较大时,查询效率变的非常低 解决方案 1、使用索引覆盖+子查询优化 /*子查询获取偏移4800000条的位置的id,在这个位置上往后取25*/ SELECT a.empno,a.empname,a.job,a.sal,b.depn
阅读全文
摘要:SELECT A.WBXSDDH,A.XSDDLX,B.XSFDH,B.XSZZDM,C.SKUID FROM GMXSDD A,GMXSDDFD B,GMXSDDSP C WHERE A.XSDDH=B.XSDDH AND B.XSFDH=C.XSFDH AND B.XSFDLX=0 AND B.
阅读全文
摘要:参照:https://mp.weixin.qq.com/s/t_of-qHBcKOiqicKBxyKPA 1、Redis 是什么? Redis 是 C 语言开发的一个开源的(遵从 BSD 协议)高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等。 它是一种 NoSQL
阅读全文
摘要:谈谈一致性 一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。 •强一致性:这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大 •弱一致性:这种一致性级别约束了系统在写入成功后,不承诺立即可以读到写入的值
阅读全文
摘要:CAP 理论是分布式系统的理论基础,一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)。 一致性:在写操作之后的所有读操作,必须返回该值。 可用性:对于一个可用性的分布式系统,每一个非故障的节点必须对每一个请求作出响应,衡量一个
阅读全文
摘要:redis内部整体的存储结构是一个大的hashmap,内部是数组实现的hash,key冲突通过挂链表去实现,每个dictEntry为一个key/value对象,value为定义的redisObject。 结构图如下: dictEntry是存储key->value的地方,再让我们看一下dictEntr
阅读全文
摘要:实际数据库数据,业务修改费率表,但是要获取当时订单数据对应的费率,这时候需要获取订单时间大于费率表创建时间(保单过犹日期),并且是费率表所有小于此订单时间的最大时间的费率。 用not exists SELECT a.NewRate FROM SDBaoguCommissionRateLog a WH
阅读全文
摘要:一 注意点 1、delete、truncate、drop;可以这么理解,一本书,delete是把目录撕了,truncate是把书的内容撕下来烧了,drop是把书烧了 2、慎用insert into select,select语句会进行相关数据加锁,如无索引条件会进行全表加锁。 二 sql语句优化点
阅读全文