数据库
hugoHH
这个作者很懒,什么都没留下…
展开
-
数据库系列(数据库设计)——悲观锁和乐观锁解析
悲观锁和乐观锁实际上说的并不是具体的一种锁,而是一种处理的逻辑。悲观锁(Pessimistic Lock):悲观锁顾名思义,就是假设事情往不好的方向发展,即我们认为每次我们获取到数据之后,数据大概率会被修改;因此我们在拿到数据之后就给数据加锁,防止数据被其他线程修改了,加锁期间,其他对该数据进行读写的线程需要等待锁的释放。乐观锁(Optimistic Lock):悲观锁顾名思义,就是假设事情往好的方向发展,即我们认为我们获取数据时,数据不会被修改,只需要等要提交更新的数据时,再去判断数据是否有被修改原创 2021-03-16 14:25:35 · 302 阅读 · 0 评论 -
数据库系列(MySQL)—— MySQL优化之同时使用max/min和group by 的坑
在数据库操作中,有时候需要获取比如说某个对象的某一类数据中的最大值/最小值,例子如下select max('attr') from table group by attr2;此时会发现获取到的数据不是最大/最小的;问题根源: group by默认返回每一组的第一条数据(每一组的数据排序都是按默认顺序排序的),就算你添加order by作为排序也会发现不起作用。解决方案:select * from table a where a.attr = (select max('attr') from ta原创 2021-01-25 14:31:14 · 1785 阅读 · 0 评论 -
数据库系列(MySQL)—— MySQL优化之多表join,多个in或or查询的速率优化逻辑
今天在优化一个sql查询,因为是一个订单的查询,需要验证一些订单的查看权限,其中逻辑需要join到多个其他表格,同时也用到很多in和or,导致多表都是用到全表扫描,速率及其慢。比如订单中的商品的标签字段需要做过滤,下面模拟表格order(订单表),item(商品表),tag(标签表)一般的逻辑大致上是这样的select * from orderwhere (某些过滤语句)where tag.name not in (tags)left join item on item.tid = ord原创 2021-01-13 17:01:58 · 1993 阅读 · 0 评论 -
数据库系列(MySQL)—— MySQL优化之in方法自动过滤掉null值
昨天在开发中发现一个数据库的问题,在做数据库查询时,我有一个条件时这样的SELECT DISTINCT *FROM `a` LEFT JOIN `b` ON `a`.`type_id`=`b`.`type_id` LEFT JOIN `i` ON `a`.`tid`=`i`.`tid` LEFT JOIN `tag` ON `i`.`item_id`=`tag`.`item_id` LEFT JOIN `h` ON `a`.`fans_id`=`h`.`fans_id` LEFT J原创 2021-01-12 09:03:22 · 1230 阅读 · 0 评论