mysql
文章平均质量分 52
y&m
这个作者很懒,什么都没留下…
展开
-
一次线上MySQL分页事故,搞了半夜...
目录 背景 分析 数据模拟 测试 解决方案 小结 今天给大家分享个生产事故,一个由于 MySQL 分页导致的线上事故,事情是这样的~背景一天晚上 10 点半,下班后愉快的坐在在回家的地铁上,心里想着周末的生活怎么安排。突然电话响了起来,一看是我们的一个运维同学,顿时紧张了起来,本周的版本已经发布过了,这时候打电话一般来说是线上出问题了。果然,沟通的情况是线上的一个查询数据的接口被疯狂的失去理智般的调用,这个操作直转载 2022-04-28 09:43:05 · 97 阅读 · 0 评论 -
关于MYSQL group by语句查询优化
1、如果对 group by 语句的结果没有排序要求,要在语句后面加 order by null;2、尽量让 group by 过程用上表的索引,确认方法是 explain 结果里没有 Using temporary 和 Using filesort;3、如果 group by 需要统计的数据量不大,尽量只使用内存临时表;也可以通过适当调大 tmp_table_size 参数,来避免用到磁盘临时表;4、如果数据量实在太大,使用 SQL_BIG_RESULT 这个提示,来告诉优化器直接使用排序算法原创 2021-12-08 19:25:37 · 612 阅读 · 0 评论 -
慢SQL治理分享
一 为什么要做这个事情1 什么是慢SQL?这里指的是MySQL慢查询,具体指运行时间超过long_query_time值的SQL。我们常听常见的MySQL中有二进制日志binlog、中继日志relaylog、重做回滚日志redolog、undolog等。针对慢查询,还有一种慢查询日志slowlog,用来记录在MySQL中响应时间超过阀值的语句。大家不要被慢查询这个名字误导,以为慢查询日志只会记录select语句,其实也会记录执行时间超过了long_query_time设定..转载 2021-07-30 13:44:20 · 85 阅读 · 0 评论 -
基于mysql的分库分表&读写分离实现
最近心血来潮,浏览各大网站之后总结精华,写了两套基于mysql的分库分表&读写分离的演示项目。(由于以下项目都是参照前人的经验,且逻辑实现复杂,具体分析就不写了,且看代码便好,如有兴趣和问题,可留言)项目一:基于AOP通过程序实现的读写分离项目项目地址:添加链接描述项目二:基于sharding-jdbc实现的分库分表&读写分离项目项目地址:添加链接描述...原创 2021-05-27 16:50:38 · 101 阅读 · 0 评论 -
Sharding-Jdbc 分布式主键(雪花算法)
实现动机传统数据库软件开发中,主键自动生成技术是基本需求。而各个数据库对于该需求也提供了相应的支持,比如Mysql的自增键,Oracle的自增序列等。数据分片后,不同数据节点生成全局唯一主键是非常棘手的问题。同一逻辑表内的不同实际表之间的自增键由于无法互相感知而生成重复主键。虽然可以通过约束主键自增长初始值和步长的方式来避免碰撞,但需引入额外的运维规则,使解决方案缺乏完整性和可扩展性。目前有许多第三方解决方案可以完美解决这个问题,如UUID等依靠特定算法自生成不重复键,或者通过引入主键生成服务等。但也正转载 2021-05-24 18:59:38 · 2192 阅读 · 0 评论 -
mysql执行计划
一、EXPLAIN语法语法:EXPLAIN SELECT1、EXPLAIN EXTENDED SELECT 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2、EXPLAIN PARTITIONS SELECT 用于分区表的EXPLAIN3、在Navicat图形化界面中,点击“解释”出现执行计划的信息二、执行计划中的信息...转载 2020-01-08 17:02:47 · 132 阅读 · 0 评论 -
(转载)innodb关键特性
innodb关键特性插入缓冲(insert buffer)两次写(Double write)自适应哈希索引(adaptive hash index)异步io(Async IO)刷新领接页(Flush Neighbor Page)1.插入缓冲使用场景,即非唯一辅助索引的插入操作,因为不是顺序的,所以将这些插入操作,存到插入缓冲中去,然后一段时间统一插入到真的索引中去,此时很有可...转载 2019-03-09 01:38:17 · 122 阅读 · 0 评论 -
(转载)drop、truncate和delete的区别
转载自 https://www.cnblogs.com/zhizhao/p/7825469.html(1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执...转载 2019-02-26 08:52:11 · 110 阅读 · 0 评论 -
(转载)浅谈 MySQL 中优化 SQL 语句查询常用的 30 种方法
1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is nul...转载 2019-02-26 08:50:27 · 114 阅读 · 0 评论 -
批量删除指定前缀的数据库表
Select CONCAT( 'drop table ', table_name, ‘;’ )FROM information_schema.tablesWhere table_name LIKE ‘hn_%’;原创 2018-10-02 17:21:37 · 1521 阅读 · 0 评论