Mysql
javashareauthor
分享让知识变得更加得有价值
展开
-
binlog_format=row不生效
binlog 有两种格式,一种是 statement,一种是row。可能你在其他资料上还会看到有第三种格式,叫作 mixed,其实它就是前两种格式的混合。查看当前的格式:show VARIABLES like '%binlog_format%'mysql> SET GLOBAL binlog_format = 'ROW';然而设置如上的方式不能生效,这是因为这个...原创 2020-03-05 11:34:19 · 2350 阅读 · 0 评论 -
如果你的 MySQL 现在出现了性能瓶颈,而且瓶颈 在 IO 上,可以通过哪些方法来提升性能呢?
1. 设置 binlog_group_commit_sync_delay 和 binlog_group_commit_sync_no_delay_count 参数,减少 binlog 的写盘次数。这个 方法是基于“额外的故意等待”来实现的,因此可能会增加语句的响应时间,但没有丢失数据的风险。 2. 将 sync_binlog 设置为大于 1 的值(比较常见是 100~1000)。这...原创 2020-03-04 10:59:28 · 736 阅读 · 0 评论 -
如何解决幻读?
现在你知道了,产生幻读的原因是,行锁只能锁住行,但是新插入记录这个动作,要更新的是记录之间的“间隙”。因此,为了解决幻读问题,InnoDB 只好引入新的锁,也就是间隙锁 (Gap Lock)。 顾名思义,间隙锁,锁的就是两个值之间的空隙。比如文章开头的表 t,初始化插入了 6个记录,这就产生了 7 个间隙。这样,当你执行 select * from t where d...原创 2020-02-26 11:36:41 · 2062 阅读 · 0 评论 -
幻读是什么?
为了便于进行解释幻读,新建一张表进行详细阐述:CREATE TABLE `t` ( `id` int(11) NOT NULL, `c` int(11) DEFAULT NULL, `d` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `c` (`c`)) ENGINE=InnoDB;insert into t values(0,0...原创 2020-02-26 10:57:13 · 1629 阅读 · 1 评论 -
慢查询记录
慢查询分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”。注意:超过指定时间,这个时间是可以设置的,如果设置为0秒,那么所有的查询都会记录再慢查询日志中,都被视为慢查询。慢查询开启先查看系统的慢查询设置:show global variables like 'sl...原创 2020-02-26 10:03:35 · 332 阅读 · 0 评论 -
针对mysql delete删除表数据后占用空间不变小的问题
开发环境MySQL前言物流规则匹配日志表记录订单匹配规则相关日志信息,方便管理员维护和查阅不匹配的订单,四个月时间,该日志表数据就有174G,当前,这么大的数据量,不仅对数据库造成了很大的负载压力,同时查询等维护也缓慢,所以采取将日志记录移出到文件进行存储。但是短期内,还需要数据库中的部分日志记录,故而有了下面的删除记录、优化表操作。日志表大小一览表本身有六七百万条数据,从...原创 2020-02-24 17:27:32 · 407 阅读 · 0 评论 -
因为需要启动时load数据到内存,重启数据库很慢
我在做贴吧系统的时候,每次访问页面都要请求一次权限。所以,这个请求权限的请求, 访问概率会非常高,不可能每次都去数据库里查,怎么办呢? 我想了个简单的方案:在应用程序里面开了个很大的内存,启动的时候就把整张表全部 load 到内存里去。这样再有权限请求的时候,直接从内存里取就行了。 数据库重启时,我的进程也会跟着重启,接下来就会到数据表里面做全表扫描,把整个用户相关信息全部塞到内存里面去。 但...原创 2020-01-15 16:33:55 · 357 阅读 · 0 评论 -
一条SQL语句在MySQL中如何执行的
一 MySQL 基础架构分析1.1 MySQL 基本架构概览下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的。先简单介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图,在 1.2 节中会详细介绍到这些组件的作用。•连接器:身份认证和权限相关(登录 MySQL 的时候)。•查询缓存: 执行查询语句的时...原创 2019-08-22 13:53:04 · 182 阅读 · 0 评论 -
Mysql的In关键字的使用
在一次的工作之余,几个同事一起聊到了mysql中In关键词的使用。当时根据我的记忆,脱口而出:in最好少用,会导致查询的字段不走索引,效率很低。但是其中一个同事回:并不是都不走索引的。我这个时候愣住了,难道我最初接受的这个信息有误?不行,我一定要亲自动手操作一番,于是我做了如下的事情。我先写了以下的sql语句:EXPLAIN select * from user where id in ...原创 2019-06-06 14:05:41 · 8582 阅读 · 1 评论 -
timestamp丢失精度问题
mysql数据库存放timestamp格式的数据出现的问题场景:在一次的开发中遇到了一个问题,将对象信息实例化到数据库,并缓存在redis。但是在对比redis中的数据和数据库中的数据时候出现了意外,那就是在数据库中类型为timestamp的字段和redis数据不一致。如下图所示:插入的数据=1551793619243redis存的数据={"vipendtime":1551793619...原创 2019-03-05 21:51:55 · 4455 阅读 · 0 评论 -
Mysql的疑难杂症
在Java开发过程中遇到Mysql相关的一些内容,进行简单总结,与大家协同进化。1、初始时间到最开始(Date)Date DATE_NULL = new Date(0);// 输出结果为:1970-01-012、初始时间到最开始(Timestamp)Timestamp TIME_NULL = new Timestamp(0);// 输出结果为:1970-01-01 08:0...原创 2018-08-10 18:15:20 · 339 阅读 · 0 评论