关于mysql大数据查询,修改。请问有什么方法可以保证性能 30
现有一个库存表,数据量暂时10万,有一个java线程对其不停更新库存数量,还有程序在调用java接口不停查询库存数量。这个表的记录数只会增加,不会减少,,,而且有时候需要...
现有一个库存表,数据量暂时10万,有一个java线程对其不停更新库存数量,还有程序在调用java接口不停查询库存数量。这个表的记录数只会增加,不会减少,,,而且有时候需要几万几万的批量更新。。几乎时刻都有web程序在访问这个表的库存情况。。。请问,我应该如何应对这种情况了?现在更新的时候可能被导致死锁。以后对这个表的操作量将会更多,,各位大神提提意见吧,谢谢。。我只会搞程序,对数据库实在掌握得不够咋地啊???
数据不是10W是190万 展开
数据不是10W是190万 展开
3个回答
展开全部
MySQL一个表100万记录不算大,我用到过单表中上亿的记录,只要规划好,一样的飞快。
第一考虑在大吞吐情况下的数据安全,按照个人经验,第一推荐选用Innodb的方式,MyISAM的引擎虽然查询高效,但是在高I/O的情况下,一旦出问题,如何进行数据修复是让人崩溃的事情。而且Innodb支持事务,如果执行不成功,会自动回滚。
第二如果你的数据表基本上都是程序在访问,那么在定制索引的时候要好好考虑一下,把你常用的检索条件在一起做复合索引,这会比分离的单键索引在数度上是数量级的提高。还有就是在你的程序里面约定好筛选条件的顺序,这个顺序一定要和你定制的复合索引从左到右一致。
第三如果你的程序牵扯到多表的联合,建议使用存储过程,这样避免在TCP/IP I/O资源的堵塞,另外存储过程的使用过程中和具体使用的表之间的索引优化。针对特别常见的组合也可以使用view的方式创建。
第四在程序里面使用SQL要遵循如下经验:
- 不要在程序里面对SQL使用循环,或把可以通过SQL计算的东西让程序处理,尽量把运算交给MySQL服务器去做
- 使用SQL的时候尽量符合自己表定义索引,不要已经索引的字段进行函数计算,这样会导致索引无效
其实性能主要是靠前期的规划,规划设计好,无论是数据库和客户端都按照规划去做,性能一般差不了哪里去。
第一考虑在大吞吐情况下的数据安全,按照个人经验,第一推荐选用Innodb的方式,MyISAM的引擎虽然查询高效,但是在高I/O的情况下,一旦出问题,如何进行数据修复是让人崩溃的事情。而且Innodb支持事务,如果执行不成功,会自动回滚。
第二如果你的数据表基本上都是程序在访问,那么在定制索引的时候要好好考虑一下,把你常用的检索条件在一起做复合索引,这会比分离的单键索引在数度上是数量级的提高。还有就是在你的程序里面约定好筛选条件的顺序,这个顺序一定要和你定制的复合索引从左到右一致。
第三如果你的程序牵扯到多表的联合,建议使用存储过程,这样避免在TCP/IP I/O资源的堵塞,另外存储过程的使用过程中和具体使用的表之间的索引优化。针对特别常见的组合也可以使用view的方式创建。
第四在程序里面使用SQL要遵循如下经验:
- 不要在程序里面对SQL使用循环,或把可以通过SQL计算的东西让程序处理,尽量把运算交给MySQL服务器去做
- 使用SQL的时候尽量符合自己表定义索引,不要已经索引的字段进行函数计算,这样会导致索引无效
其实性能主要是靠前期的规划,规划设计好,无论是数据库和客户端都按照规划去做,性能一般差不了哪里去。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |