mysql增加分区表
概述简单分享下最近做的一个mysql数据库分区表改造方案,仅供参考。思路:(假设在2020.7.21进行表分区改造)没时间,就不画图说明了1、创建与原始表一样结构的新表,新分区2、往新表插入旧表在20...
2024.11.15分享一个最近自己写的简单实验,主要是为了验证一下mysql的几种高效分页设计实现方案,下面一起来看看吧!
1、创建表创建一个测试表
create table t1(c1 int(11) default NULL, c2 varchar(30) default NULL, c3 date default NULL ) engine=innodb;2、插入数据--停止binlog日志写入set sql_log_bin=off;或者SET @@SESSION.sql_log_bin = 0--创建存储过程delimiter //CREATE PROCEDURE load_hwb()begindeclare v int default 0; while v < 1000000 do insert into t1 values (v,‘testing fenye‘,adddate(‘2019-01-01‘,(rand(v)*36520) mod 3652)); set v = v + 1; end while; end //--插入100万数据mysql> delimiter ;mysql> call load_hwb(); --开启binlog日志写入set sql_log_bin=on;或者SET @@SESSION.sql_log_bin=1说明:使用sql_log_bin这个参数是需要注意几点:
1)、千万不要不假思索的加上 global 修饰符(set global sql_log_bin=0),这样会导致所有在Master数据库上执行的语句都不记录binlog
2)、insert、update、delete的SQL语句会导致Master和Slave数据库数据不一致,要谨慎操作。
3、建立索引create index idx_id on t1(c1);4、传统分页mysql> select * from t1 order by c1 desc limit 0, 10--在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引。随着数据量增加页数会越来越多,查看后几页SQL就可能类似:mysql> select * from t1 order by c1 desc limit 999990,10;--总之就是越往后分页,LIMIT语句的偏移量就会越大,速度也会明显变慢。一开始是0.01s
到这里就要3.12s了。
5、limit的高效分页(直接走索引)mysql> select * from t1 WHERE c1>=0 order by c1 limit 10;可以看到输出结果一致,但基本秒出结果。
看执行计划已经走了索引。
6、limit的高效分页(id>=或 select * from t1 where c1 select * from t1 inner join (select c1 from t1 order by c1 desc limit 999990,10) as t using(c1);8、limit的高效分页(程序实现)因为是程序实现,这里就只提供想法了...
--程序先取c1 select c1 from t1 order by c1 desc limit 999990,10;select * from c1 where c1 in (0,1,2,3,4...);9、limit分页与缓存结合场景:在分页的时候,缓存5页记录,默认每页20条,缓存大小100
基本思路是:第一次查的时候,先判断缓存中存不存在当前页的数据,如果存在,查找缓存中的数据,如果不存在,则去数据库中查询5页数据放入缓存中,然后再缓存中读取数据。如果是当前页是前3页,那么读取1-5页的数据,如果当前页是后3页,读取后5页的数据,如果是中间页,读取当前页前两页+当前页+当前页后两页的数据;
类似百度的搜索界面,总共保留最新的10条记录,分10页。
分页样式类似如下:
后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
如果你觉得这篇文章对你有帮助, 请小小打赏下~
概述简单分享下最近做的一个mysql数据库分区表改造方案,仅供参考。思路:(假设在2020.7.21进行表分区改造)没时间,就不画图说明了1、创建与原始表一样结构的新表,新分区2、往新表插入旧表在20...
2024.11.15mysql分页查询是先查询出来所有数据,然后跳过offset,取limit条记录,造成了越往后的页数,查询时间越长一般优化思路是转换offset,让offset尽可能的小,最好能每次查询都是第一页,也...
2024.11.13关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考...
2024.11.13概述前面已经介绍了监控端部署slowquery工具部分,今天主要介绍被监控端的部署方面内容。一、脚本定时推送慢查询日志1、脚本内容进入到slowquery/client_agent_script目录下...
2024.11.15前言在开发过程中,使用到了MySQL数据库,但是想知道每次对数据库进行了哪些操作,方便对自己的代码进行优化,这时候就需要用到查询日志genral_log。动态修改配置mysql > show vari...
2024.11.15