用mysql数据库,有个表每天都会新增100--200w条数据
曾经考虑从业务上减小该表数据量,但是不符合需求。现状就是每天都有起码100w条数据进入这个表, 对这个表的操作倒是很简单,只是做一个select * from tabA a,tabB b where a.id = b.id; 的sql但是由于数据量太大做这个操作太慢了。不知道有没有什么办法啊。 表的字段也不多大概10个。 优化,现在就只做了pk的index其他都没有做啊。 以前也听人说 什么垂直分割水平分割 什么用多个mysql集群只做查询用,insert另外做。什么的。 现在思路就是想从mysql这块做点优化。 从表这块做点优化。 不知道有人能提供点优化办法吗? 解决了放500分啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。感谢大家乐很头疼555
假如这100W条数据写入了表A中,也就是tabA。 那么: 1.tabA,分割。按日期也好,还是按表中其他字段也好,请做一个分割。或者分区也好。 2.按你的描述,tabB中的数据应该较少且相对稳定吧。那么将查询改为: SQL code: SELECT * from tabB,tabA WHERE tabA.id=tabB.id; .用小表来驱动大表。 3.是不是真的要'SELECT * '呢?就没有无用的字段吗?试着将tabA中的没有必要使用的字段不做查询你,减少IO量和数据传送量。将tabA中的这些字段单独拿出去,作为一张新表,与tabA中记录一一对应,尽量减小tabA的体积。 4.索引字段id。 5.修改表的引擎为innodb引擎。这样可以避免表级锁的发生。 引用 select * from tabA a,tab
相关问答:
我是用mysql自带的C API if(mysql_real_connect(&mysql,"125.0.0.108","root","root","home",3306,NULL,0)) { AfxMessageBox("数据库连接失败") ......
有个winform程序,使用c#+mysql,需要在一个窗体设置mysql自动删除功能,包括自动删除多少天之前的数据以及是否开启自动删除功能,我程序退出后,还怎么控制Mysql自己删除啊?是不是要用mysql的event来实现?c#可以调用mysq ......
我对SQL SERVER和ACCESS比较熟,所以数据库的通用基础东西可以说都掌握的差不多了,我现在想要的就是以上两数据库的独特之处的介绍和应用介绍。 另外书最好对应最新版本 oracle是11g吧 10的也行;mysql是5.1吧 谢 ......
mysql数据库的编码格式是utf8 在c++程序中使用C API直接连接mysql数据库,把中文保存到mysql数据库中,中午变成乱码 使用mysql的load命令导入文本文件,无论文本文件是ANSI还是utf8编码,都是乱码 请问上面两个问 ......