社区
MySQL
帖子详情
mysql 对超大表的处理
象宇
2010-12-17 08:44:53
我假设个问题,就是我的一个数据库表,已经很多个G了,而其这个表所在的磁盘空间已经所剩无几了,我想把这个表分到其他的磁盘上存储。具体如何做啊?
手册上没有很明确的例子。
帮忙解决一下吧。
谢谢。
...全文
517
27
打赏
收藏
mysql 对超大表的处理
我假设个问题,就是我的一个数据库表,已经很多个G了,而其这个表所在的磁盘空间已经所剩无几了,我想把这个表分到其他的磁盘上存储。具体如何做啊? 手册上没有很明确的例子。 帮忙解决一下吧。 谢谢。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
27 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
象宇
2010-12-21
打赏
举报
回复
ACMAIN_CHM
的答案是正解,只不过,我还没有验证。
实际的情况还不知道会怎样。
gatx177
2010-12-17
打赏
举报
回复
删除冗余数据~~~~~~~~~~~~~~~
ACMAIN_CHM
2010-12-17
打赏
举报
回复
没有办法,目前的MYSQL版本在WINDOWS都不支持这个选项。
WWWWA
2010-12-17
打赏
举报
回复
用MYSQLDUMP备份、再导入吧,否则换系统(UNIX)
象宇
2010-12-17
打赏
举报
回复
[Quote=引用 15 楼 wwwwa 的回复:]
DATA DIRECTORY INDEX DIRECTORY
windows 下这两个参数不起作用.
[/Quote]
那我该如何做,没有方法吗?
ACMAIN_CHM
2010-12-17
打赏
举报
回复
WINDOWS中不支持符号连接,所以不能实现数据库文件存储在不同位置。
WWWWA
2010-12-17
打赏
举报
回复
DATA DIRECTORY INDEX DIRECTORY
windows 下这两个参数不起作用.
象宇
2010-12-17
打赏
举报
回复
CREATE TABLE ts (id INT, purchased DATE)
PARTITION BY RANGE(YEAR(purchased))
SUBPARTITION BY HASH(TO_DAYS(purchased))
(
PARTITION p0 VALUES LESS THAN (1990)
(
SUBPARTITION s0
DATA DIRECTORY = '/disk0/data'
INDEX DIRECTORY = '/disk0/idx',
SUBPARTITION s1
DATA DIRECTORY = '/disk1/data'
INDEX DIRECTORY = '/disk1/idx'
),
PARTITION p1 VALUES LESS THAN (2000)
(
SUBPARTITION s0
DATA DIRECTORY = '/disk2/data'
INDEX DIRECTORY = '/disk2/idx',
SUBPARTITION s1
DATA DIRECTORY = '/disk3/data'
INDEX DIRECTORY = '/disk3/idx'
),
PARTITION p2 VALUES LESS THAN MAXVALUE
(
SUBPARTITION s0
DATA DIRECTORY = '/disk4/data'
INDEX DIRECTORY = '/disk4/idx',
SUBPARTITION s1
DATA DIRECTORY = '/disk5/data'
INDEX DIRECTORY = '/disk5/idx'
)
);
我现在是考虑这个问题,如何解决。
这个是手册中的例子,是在linux下的,我如何在windows中实现,可以只把表分到 F:和G:两个磁盘下。
小小小小周
2010-12-17
打赏
举报
回复
主键问题,你的表结构发出来
WWWWA
2010-12-17
打赏
举报
回复
你的代码贴出来
象宇
2010-12-17
打赏
举报
回复
[Quote=引用 10 楼 zuoxingyu 的回复:]
partition_definition:
PARTITION partition_name
[VALUES {
LESS THAN (expr) | MAXVALUE
| IN (value_list) }]
[[STORAGE] ENGINE [=] engine-nam……
[/Quote]
我看着手册尝试过,老是语法报错,所以来论坛求助,,,能不能给个实际的例子,各位达人······
zuoxingyu
2010-12-17
打赏
举报
回复
partition_definition:
PARTITION partition_name
[VALUES {
LESS THAN (expr) | MAXVALUE
| IN (value_list) }]
[[STORAGE] ENGINE [=] engine-name]
[COMMENT [=] 'comment_text' ]
[DATA DIRECTORY [=] 'data_dir']
[INDEX DIRECTORY [=] 'index_dir']
[MAX_ROWS [=] max_number_of_rows]
[MIN_ROWS [=] min_number_of_rows]
[TABLESPACE [=] (tablespace_name)]
看分区的红色部分。可以指定某个分区的存储位置。
象宇
2010-12-17
打赏
举报
回复
[Quote=引用 3 楼 acmain_chm 的回复:]
你是想把数据库移到另一个硬盘分区上,不是做表分区。
你可以先停止你的MYSQL服务,然后把整个DATADIR目录复制到目标硬盘分区上,然后再修改MY.INI中的DATADIR参数。再启动MYSQL就可以了。
[/Quote]
我晕,老大,我明明写的是“分”,而不是移!!!
WWWWA
2010-12-17
打赏
举报
回复
直接COPY容易出问题,INNODB引擎的表不能直接COPY,最好用MYSQLDUMP备份
小小小小周
2010-12-17
打赏
举报
回复
1:mysqldump 出来之后,修改my.cnf里面的数据目录,datadir=新的磁盘,再还原;适用myisam表.
2:要是innodb的话,dump出来之后,修改innodb_data_file_path的最后一个表空间到新的目标目录,再还原.
3:把datadir的目录整个复制到新的目标地址,再用软连接连接到旧地址,不需要修改配置文件(适用myisam)---linux
4:在data目录的同级,新加一个后缀名为sym的文件.把某个库的地址指到新地址如(E:\data\Q)----windows
iihero
2010-12-17
打赏
举报
回复
转移数据,可以直接复制DATADIR目录,再修改配置文件。
或者将整个MySQL目录转移到别的分区,然后修改配置文件,重新配置服务。
都可以的。
WWWWA
2010-12-17
打赏
举报
回复
OR
直接用MYSQLDUMP备份数据库,再新建数据库,导入备份
WWWWA
2010-12-17
打赏
举报
回复
你的MYSQL版本
http://dev.mysql.com/doc/refman/5.1/zh/partitioning.html
手册比较详细
ACMAIN_CHM
2010-12-17
打赏
举报
回复
你是想把数据库移到另一个硬盘分区上,不是做表分区。
你可以先停止你的MYSQL服务,然后把整个DATADIR目录复制到目标硬盘分区上,然后再修改MY.INI中的DATADIR参数。再启动MYSQL就可以了。
象宇
2010-12-17
打赏
举报
回复
windows mysql 5.1 以上才有分区 手册上没有很详细的例子。
加载更多回复(7)
mysql
超大
表
处理
方式是_知乎 Hive Metastore 实践:从
MySQL
到 TiDB
作者 | 胡梦宇,知乎数据架构平台开发工程师责编 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)背景ApacheHive 是基于 Apache Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库
表
,并且提供了 Hive SQL 进行查询和分析,在离线数仓中被广泛使用。HiveMetastore 是 Hive 的元信息管理工具,它提供了...
mysql
超大
表
处理
方式是_
Mysql
数据库大
表
优化方案和
Mysql
大
表
优化步骤
当
MySQL
单
表
记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化。单
表
优化除非单
表
数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的
表
在千万级以下,字符串为主的
表
在五百万以下是没有太大问题的。而事实上很多时候
MySQL
单
表
的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量。字段尽量使用TINYINT、SMALL...
mysql
超大
表
处理
方式是_第29问:
MySQL
的复制心跳说它不想跳了
问题最近年底,大家的数据库经常跑批量大事务,会发现复制突然断开,报错“心跳与本地信息不兼容”:会是什么原因?实验我们先来复现一下,再进行分析。宽油,做一对主从数据库:我们先造一个 500M 的空文件,下一步有用:再制造一张大
表
,这里用到了之前的造
表
法,不同的是使用了一个 longblob 字段,让少数的几行记录就能占用很大的 binlog 空间,方便我们后面做实验。这里的 longblob 字段,...
mysql
表
太大删不掉_
Mysql
如何 删除大
表
【问题隐患】由于业务需求不断变化,可能在DB中存在
超大
表
占用空间或影响性能;对这些
表
的
处理
操作,容易造成
mysql
性能急剧下降,IO性能占用严重等。先前有在生产库drop table造成服务不可用;rm 大文件造成io跑满,引发应用容灾;对大
表
的操作越轻柔越好。【解决办法】1.通过硬链接减少
mysql
DDL时间,加快锁释放2.通过truncate分段删除文件,避免IO hang【生产案例】某对m...
MySQL
57,062
社区成员
56,759
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章