帝国CMS7.5管理副表分表(数据已经存在)数据迁移至其他分表

毒药      177阅读

一、尽量做到:(具体根据服务器配置情况,以下是一般情况)
1、数据库50G,应新建主表;
2、满5W条数据新建副表,并将最新建的副表设为当前存放表;【也有建议10W条数据分一次表的】
数据量过大,已导致MYSQL数据对IO的操作读写量巨大,导致整个服务器负载过大。
特别是帝国cms后台操作缓慢,尤其是数据量大的栏目,本人的站点没分表前,只要在后台点击数据量大的栏目时,打开非常慢,服务器负载瞬间100%,但是内存和cpu均在20%左右(2核心,4G内存,20M带宽)
二、分表过程:
1、帝国cms后台有很简单的分表操作
2、后台>>系统>>数据表与系统模型>>管理数据表>>管理分表>>管理副表分表
3、建议按照系统默认的命名规则来命名,即数字序列
三、建议使用phpmyadmin来进行sql命令转移数据
1、phpmyadmin>>点击需要操作的数据库>>右侧点SQL进入到命令操作行
2、输入以下命令:

INSERT INTO phome_ecms_news_data_2
SELECT * FROM phome_ecms_news_data_1 T2
WHERE T2.ID>= 50001 AND T2.ID<= 100000;
update phome_ecms_news set stb=REPLACE(stb,1,2)
WHERE ID>= 50001 AND ID<= 100000;

3、代码释义:
第一句:在phome_ecms_news数据表第2分表插入行
第二句:将phome_ecms_news数据表第1分表数据复制到数据表第2分表
第三句:限制即将复制的数据信息ID范围为50001到100000
第四句:更改数据表phome_ecms_news中分表ID以便查询【stb=REPLACE(stb,1,2)中表三就是stb=REPLACE(stb,1,3),表四就是stb=REPLACE(stb,1,4),以此类推】
第五句:限定即将修改的phome_ecms_news分表ID范围为50001到100000

4、命令执行完成之后,在phome_ecms_news_data_1分表中原有ID范围为50001到100000的数据已经没用了,需要将它清除掉以节省数据空间,删除命令如下:

DELETE FROM phome_ecms_news_data_1 WHERE ID>= 50001 AND ID<= 100000;

代码释义:删除原信息范围为50001到10000的信息

   177阅读

INSERT INTO phome_ecms_news_data_3
SELECT * FROM phome_ecms_news_data_1 T3
WHERE T3.ID>= 100001 AND T3.ID<= 150000;
update phome_ecms_news set stb=REPLACE(stb,1,3)
WHERE ID>= 100001 AND ID<= 150000;

DELETE FROM phome_ecms_news_data_1 WHERE ID>= 100001 AND ID<= 150000;

毒药   126.8天前
1
登录 后发表评论