![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 68
乐乐Java路漫漫
热衷于互联网JAVA开发,对新技术的探索孜孜不倦,对问题的研究废寝忘食,希望大家一起探索
展开
-
分布式服务接口的幂等性如何设计(比如不能重复扣款)?
判断redis中是否有订单记录,有则返回已支付完成查询数据库判断没有订单,先插入订单,支付中【单号是唯一索引】有订单,判断是支付中,进入下一步如果是完成,则返回开启事务,加悲观锁:再次判断状态是支付中:然后下一步,不然返回支付完成支付完成,修改状态为支付完成提交redis:设置为已支付set order_id payd...原创 2021-07-05 15:20:34 · 156 阅读 · 0 评论 -
存储过程调用问题【missing parameter type】
missing parameter type,调用存储过程的时候遇到这个问题,后来查看jdbc代码,发现是创建存储过程的时候,【是否入参出参】,【参数名称】和【参数类型】中间都要有个空格,不然java代码是无法正常执行的,但是直接命令执行存储过程是正常的。以后需要多注意。存储过程CREATE DEFINER=`root`@`%` PROCEDURE `p`(IN `time_interval_minute` int,IN `start_time` datetime, OUT `flag` int)BE原创 2020-08-21 10:35:10 · 1679 阅读 · 0 评论 -
与 MySQL 因“CST” 时区导致时间差了13 小时
CST 时区名为 CST 的时区是一个很混乱的时区,有四种含义:美国中部时间 Central Standard Time (USA) UTC-05:00 / UTC-06:00澳大利亚中部时间 Central Standard Time (Australia) UTC+09:30中国标准时 China Standard Time UTC+08:00古巴标准时 Cuba Standard Time UTC-04:00美国从“3月11日”至“11月7日”实行夏令时,美国中部时间改为 UTC-05:0原创 2020-09-21 14:53:23 · 821 阅读 · 0 评论 -
大表结构修改操作
当需要对表进行ddl操作如加索引、增删列时,数据量小时直接在线修改表结构影响不大当表达到百万、千万数据就不能直接在线修改表结构下面是具体的过程:1、备份数据select * from bq_order into outfile '/home/admin/order.txt';mysql> select * from bq_order into outfile '/home/admin/order.txt';Query OK, 10001000 rows affected (1 min 3原创 2020-08-28 14:02:39 · 244 阅读 · 0 评论 -
mysql 优化总结
1. 避免语句隐式转换两个参数至少有一个是 NULL 时,比较的结果也是 NULL,例外是使用 <=> 对两个 NULL 做比较时会返回1,这两种情况都不需要做类型转换两个参数都是字符串,会按照字符串来比较,不做类型转换两个参数都是整数,按照整数来比较,不做类型转换十六进制的值和非数字做比较时,会被当做二进制串有一个参数是 TIMESTAMP 或 DATETIME,并且另外一个参数是常量,常量会被转换为 timestamp有一个参数是 decimal 类型,如果另外一个参数是 de原创 2020-05-08 22:40:21 · 205 阅读 · 0 评论 -
mysql之explain分析
在这里对explain的各个字段进行详细的分析,来帮助大家分析自己所写的sql是否最佳的使用了索引。首先是select_type:将select查询分为简单(simple)和复杂两种类型复杂类型又分为子查询(subquery)和from列表中包含子查询(drived)simple:SELECT * FROM tp_lifecircle_consume WHERE order_sn = ...原创 2020-04-20 11:45:03 · 1076 阅读 · 1 评论 -
mysql order by索引分析
这里主要讨论一下InnoDB B-Tree索引的使用,不提设计,只管使用。B-Tree索引主要作用于WHERE和ORDER BY子句。这里讨论的均在MySQL-Server-5.7.23测试CREATE TABLE `friends` ( `ID` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `uid`bigint(20) UNSIGNED NOT NU...转载 2018-10-09 00:34:46 · 2531 阅读 · 0 评论 -
【mysql】对于a,b,c三个字段的复合索引的测试
结论,在abc三个字段的符合索引,只要用到了a这个字段,都能够使用索引,与顺序无关。CREATE TABLE key_test (id int(11), name VARCHAR(20), priority int(4), desc VARCHAR(255));EXPLAIN SELECT * FROM key_test WHERE id = 1 and priority = 1 AND...原创 2018-08-23 10:38:26 · 12119 阅读 · 0 评论 -
避免商品超卖的4种方案
避免商品超卖的4中方案(以下是一些核心思路)第一种方案:在每次下订单前我们判断促销商品的数量够不够,不够不允许下订单,更改库存量时加上一个条件,只更改商品库存大于0的商品的库存,当时我们使用ab进行压力测试,当并发超过500,访问量超过2000时,还是会出现超卖现象。public function buyOne() { $shop = Shop::find(1); if (...原创 2018-08-02 18:20:55 · 16595 阅读 · 5 评论 -
mysql索引实现(索引树结构)
MYSQL索引实现在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。MyISAM索引实现MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图: 这里设表一共有三列,假设我们以Col1为主键,则图8是一个MyISAM表的...原创 2018-04-13 14:51:55 · 259 阅读 · 0 评论 -
mysql优化顺序
mysql优化顺序:优化你的sql和索引添加缓存,memcached,redis主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以使用第三方工具,如atlas使用mysql的自带分区表,自己的应用是透明的,无需更改代码,但是sql语句是需要针对分区表做优化的,sql条件中要带上分区条件的列,从而使查询定位到少量地分区上,否则就会扫描全部分区。做垂直拆分,其实就是根据你模块的...原创 2018-04-13 14:05:10 · 482 阅读 · 1 评论 -
数据库查询索引(单个索引和复合索引)
当一条sql语句的查询涉及到多个字段,这个时候给每个字段加索引,数据库也只能够使用其中的一个索引,这个时候使用复合索引就比较好了。这是为什么呢?这是因为:全表扫描/只使用一个索引的速度比起来,去分析两个索引二叉树更加耗费时间,所以绝大多数情况下数据库都是是用一个索引。 如这条语句:select count(1) from table1 where column1 = 1 and colu...原创 2018-04-13 11:18:03 · 3653 阅读 · 0 评论 -
mysql锁隔离机制
多版本并发控制技术已经被广泛运用于各大数据库系统中,如Oracle,MS SQL Server 2005+, Postgresql, Firebird, Maria等等,开源数据库MYSQL中流行的INNODB引擎也采用了类似的并发控制技术.本文就将结合实例来解析不同事务隔离等级下INNODB的MVCC实现原理.1 MVCC概述1.1 MVCC简介 MVCC (Multiversion Concu转载 2017-09-07 20:14:23 · 336 阅读 · 0 评论 -
IP address could not be resolved: Temporary failure in name resolution
在自己的mysql日志中发现了如下的错误信息2017-09-15T01:07:10.373535Z 5 [Warning] IP address '192.168.33.1' could not be resolved: Temporary failure in name resolution2017-09-15T01:07:28.445920Z 6 [Warning] IP address '原创 2017-09-15 17:49:56 · 2359 阅读 · 0 评论 -
mysql 主从复制环境搭建
Mysql复制概念说明 Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器转载 2017-09-06 20:05:39 · 280 阅读 · 0 评论 -
mysql pdo 事务嵌套
经常会在处理事务的时候出现多个事务嵌套的情况,这个时候最好有一个处理嵌套事务的封装类来处理,就不需要去修改业务代码来兼容这样的问题了。<?phpclass database extends PDO{ protected $_transTimes = 0; public function beginTransaction() { ++$this->_tra原创 2017-09-14 14:45:50 · 759 阅读 · 0 评论 -
mysql 远程登陆不上排查思路
ping 目标地址,检测是否是网络问题ping 192.168.33.20telnet 192.168.33.20 3306 检测是否是防火墙挡住了如果关闭了防火墙,telnet还是不通,则使用netstat -apn|grep 3306观察数据库是否已开启,3306端口是否被监听检测账号的权限,是否已经允许其他及其访问。将host从localhost改成%原创 2017-09-13 10:41:29 · 525 阅读 · 0 评论