我可以: 邀请好友来看>>
ZOL星空(中国) > 技术星空(中国) > MySQL星空(中国) > 关于MYSQL 分区表的选择!
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

关于MYSQL 分区表的选择!

283浏览 / 1回复

0
精华
198
帖子

等  级:Lv.1
经  验:0
  • Z金豆:

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:
  • 注  册:
  • 登  录:
发表于 2008-12-17 09:19:17
电梯直达 确定
楼主
现一生产库,MYSQL数据库信息如下ysql> status
--------------
mysql  Ver 14.7 Distrib 4.1.20, for redhat-linux-gnu (i386) using readline 4.3Connection id:          19212
Current databbse:       information_schema
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.14-beta-log
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    utf8
Client characterset:    latin1
Conn.  characterset:    latin1
UNIX socket:            /data/mysql/mysql.sock
Uptime:                 4 days 9 hours 24 min 2 secThreads: 130  Questions: 508391673  Slow queries: 606  Opens: 966  Flush tables: 1  Open tables: 959  Queries per second avg: %
--------------
此数据库服务器中有一库,里面有两个分区表,一个分区表的数据特别大,而且数据是时实更新,现数据文件是50多GB,索引文件90多GB。采用的是HASH分区
表的结构如下| check_data_log | CREATE TABLE `check_data_log` (
  `nCheckdataLogID` int(11) NOT NULL AUTO_INCREMENT,
  `nCheckpointID` int(11) DEFAULT NULL,
  `fValue` float(10,2) DEFAULT NULL,
  `dtGetdatetime` datetime DEFAULT NULL,
  `nCheckOK` int(1) DEFAULT NULL,
  `SubClassWord` varchar(20) DEFAULT NULL,
  `ValueWord` varchar(20) DEFAULT NULL,
  KEY `idx_id` (`nCheckdataLogID`),
  KEY `idx_key` (`nCheckpointID`,`dtGetdatetime`)
) ENGINE=MyISAM AUTO_INCREMENT=2117556084 DEFAULT CHARSET=gb2312 /*!50100 PARTITION BY HASH (nCheckpointID) PARTITIONS 300  */ |
索引如下
mysql> show index from mo.check_data_log;
+----------------+------------+----------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+
| Table          | Non_unique | Key_name | Seq_in_index | Column_name     | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+----------------+------------+----------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+
| check_data_log |          1 | idx_id   |            1 | nCheckdataLogID | A         |  2109589671 |     NULL | NULL   |      | BTREE      |         |
| check_data_log |          1 | idx_key  |            1 | nCheckpointID   | A         |       11440 |     NULL | NULL   | YES  | BTREE      |         |
| check_data_log |          1 | idx_key  |            2 | dtGetdatetime   | A         |  2109589671 |     NULL | NULL   | YES  | BTREE      |         |
+----------------+------------+----------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+
3 rows in set (0.00 sec)现在单查询没有什么问题,比如
select * from check_data_log limit 1000之类的语句如果用时间来做查询的话,就非常慢
因为这个表是个监控表,很多设备每十秒钟生成一次数据往里面插入数据!
如下面的语句select * from check_data_log where dtGetdatetime='2007-04-11 19:53:57';
现在想采用range 来分区,表的大小请看附件数据库是REDHAT 5.1 I386 准备迁移到64位平台上面,现在这个表中有20多亿条数据,我想在想查询我想我的数据把他过滤出来,根本无法查出来!用了子查询 insert into mo_new.check_data_log ( select distinct t1.nCheckdataLogID,t1.nCheckpointID,t1.fValue,t1.dtGetdatetime,t1.nCheckOK,t1.SubClassWord,t1.ValueWord from check_data_log t1 left join checkpoint t2 on t2.ncheckpointid where t2.nunitid in ( '7','12','13','19','21','22','45' ));
数据库有些优化参数还没有设置!刚接手没有多长时间,现在通过WEB访问生成某一时间段的图形非常慢,就象上面,我查询某一时间的都不行,别说WEB 页面上的1天或者 几十小时!唉,比较头痛各位,帮忙提提建议!
多谢!

gemeijie

gemeijie


精华

帖子

等  级:Lv.4
经  验:1633
发表于 2010-01-30 10:53:21 1楼
学习
高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表