数据库

mysql

奇怪的mysql慢查询

线上问题 目前还没有未知根本缘由,线上跑了一个月左右,数据库这张表,大约有80万数据 当发生order by 和 limit 同时作为条件时,查询速度下降到3秒以上 表基本信息 首先利用 pager cat /dev/null; nopager; pager 只影响单次链接 介绍一下表的情况,id 是 唯一索引, rid(下面没用到) 是主键索引,status 是普通字段 查看表索引,可见 mysql> show index from 10000_web \G; *************************** 1. row *************************** Table: 10000_web Non_unique: 0 Key_name: PRIMARY

By chainhelen

mysql

MySQL 通用查询日志

首先推荐一款linux下的mysql客户端mycli mysql里面有很多日志,如bin日志用来恢复数据,慢查询日志用来监控查询较慢的数据 只记了通用日志的开启方式,其他的日志都是类似命令 mysql root@localhost:(none)> show global variables like '%gener%'; +------------------+--------------------------------------------+ | Variable_name | Value | |------------------+--------------------------------------------| | general_log | OFF | | general_log_file | /var/lib/mysql/iZwz92pw32r9w6beu4jlfpZ.log | +-

By chainhelen

数据库

数据库并发锁

问题 之前让同事修改需求,实现商品列表页上的每个购物车图标按钮,点击能够局部刷新用户的购物车 购物车数据库是这样设计的,每条数据主要跟用户id、商家id、商品id有关;另外还有一个字段是count,也就是说用户对某个商品的购物车数据就是该count 1. 如果查到三条信息一致的记录,那么就update原来的那条记录 count + 1 2. 如果没有查到这样的记录,那么insert一条 count = 1 的数据 问题就是这个insert;不然只有update的话,按照原来我写的文章 mysql数据一致性闲谈,搞一个悲观锁就ok了 问题场景 当一个新的用户,连续两次快速点击同一个商品的购物车按钮(前端没有做同步,允许并发),后台的ssh结构会导致两个线程都进入了上述情况2中 简化问题 因为我对java不是很熟,我们来把原有问题简化成如下问题 import java.util.*; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLo

By chainhelen

golang

mysql数据一致性闲谈

外部连接 首先让mysql在远程服务器上,现在希望它能被外部ip访问 在/etc/my.cnf里面,找到bind-address修改为0.0.0.0, //重启mysql service mysql restart //查看mysql服务 netstat -anp | grep mysqld 看到如下监听端口已经是0.0.0.0 但是发现外部ip还是访问不了远程的mysql 现在远程服务器上用mysql-client连上 //root 是用户名 mysql -u root -p //mysql本身的数据库 use mysql //创建 create user 'mysqlremoteusername'@'0.0.0.0' identified

By chainhelen