我有一个客户设计的系统,该表最初被认为在几年内不会超过10 to (可能是1000万行)。嗯,他们导入的信息比他们想象的要多得多,在一个月内,这个表现在达到了208 is (9亿行)。
我几乎没有使用MySQL的经验,而使用Microsoft SQL的经验要多得多。MySQL中有没有什么东西允许客户机让数据库跨越多个文件,从而使运行的查询不必使用整个表和索引?表中有一个字段可以很容易地拆分,但我不确定该怎么做。
我试图解决的主要问题是从这个表中进行检索查询。插入并不是什么大问题,因为它都是由后端服务完成的。我有一个测试系统,其中表大约为2 my (600万行),我的查询所用时间不到一秒。当在生
MySQL innodb表,在datetime列上分区,基本上只是一个日志表。
当我试图重组或删除一个分区时(这需要一个独占的元数据锁),我希望查询在几秒钟后超时并抛出一个错误,然后我可以捕捉到这个错误,然后重试/警告负责服务器的人/等等。有没有一个好的/简单的方法来做到这一点,或者我是否需要启动另一个线程来监视分区线程,如果花的时间太长就终止查询?
(背景:我们遇到了一个问题,所有对表的查询都会挂起“等待表元数据锁”。这被追踪到一个从未关闭的事务,防止每小时分区代码锁定表,同时阻止任何其他访问。出错的代码被修改了,但我希望分区系统在这种情况下还能正常工作。)
对不起,如果这是一个愚蠢的问题,但这是新的,所以需要一些帮助,以了解一些事情。我目前正在将mysql升级到5.1,这样我就可以在mysql中使用分区。我的问题是,如果我对一个表进行分区,一个分区表(包括修剪过程)是否仍然可以使用联接进行查询,或者如果您只是查询有分区的表,那么分区是否是最佳的呢?
编辑
下面是一个示例查询:
SELECT event.*,site.* FROM event INNER JOIN site ON event.siteid = site.id
WHERE event.eventdate >= [somedate] AND event.eventdate <
我有一个MYSQL表,在年份上有分区,在月份上有子分区。
CREATE TABLE ptable (
id INT NOT NULL AUTO_INCREMENT,
name varchar(100),
purchased DATETIME NOT NULL,
PRIMARY KEY (id, purchased)
)
PARTITION BY RANGE( YEAR(purchased) )
SUBPARTITION BY HASH( MONTH(purchased) )
SUBPARTITIONS 12 (
PARTITION p0 VALUES LESS
我一直在关注这篇关于如何使用Hive分析推特数据的文章:
我已经设置了flume来收集twitter数据并写入HDFS。我已经设置了一个指向相同HDFS位置的配置单元表。
当我在配置单元中运行类似这样的命令时:从推文中选择entities.user_mentions.screen_name;
我得到的响应如下: OK Time Time: 0.16秒。
无论我运行什么查询,我都得不到任何结果。
由于我不熟悉配置单元,我是希望在配置单元命令行中看到结果,还是必须从mySQL中挖掘结果。mySQL是metastore。
我在我的一个应用程序中使用MySQL数据库,其中一个表的大小约为10 am。我想从该表中删除符合条件的行。Delete查询的形式为:
Delete from table_name
where (a,b,c) in ((1,2,3),(1,5,6));
在字段(a,b,c)上有一个综合索引。查询需要几分钟来删除行,而我希望操作在几毫秒或几秒内完成。我如何才能做到这一点?字段上的单个索引会比多列索引快吗?
我的意思是,如果查询如下:
Delete from table_name
where a = 1 and (b,c) in ((2,3),(5,6));
这会带来更快的结果吗?
我有一个包含2000万行的MySQL表。查询此数据库花费的时间太长。数据库格式如下:
Column Column Column Sector
data data data Retail
data data data Utility
data data data Retail
data data data Insurance
data data data Retail
data data data Agriculture
da
我对300MB的表进行了分区,并尝试使用以下命令从p0分区进行select查询
SELECT * FROM employees PARTITION (p0);
但是我得到了以下错误
ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near '(p0)' at line 1
如何编写select查询从特定分区获取数据?