• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

系统究竟允许存在多少个内存表,该怎么解决

mysql 搞代码 7年前 (2018-05-31) 174次浏览 已收录 0个评论

系统究竟允许存在多少个内存表
架构mysql——linux + linux +apache
在慢查询日志发现比较多的有3-4个表  
a 表 10万 b 表10万 c 20万 (去年年初的时候是3万不到 现在多了速度慢下来)

另外这3个表还是复制表 。 (在线高并发, 这台机器和另外1台机器为复制环境)
太多的慢查询牵涉到这3个表。 已经索引优化 ,加了大量的临时表。

万般无赖下,我开始考虑使用如下策略
a——分别建立对应的内存表a1
b——分别建立对应的内存表 b1
c ——分别建立对应的内存表c1

delete update insert 全部在 a b c 进行
select 全部在a1 b1 c1

高并发环境没有办法 ,几乎把所有方法用过了,目前只能这样用
同意否

(另外当前max-heap-size是1667 0000 请问我最大的内存表可以多大
系统究竟允许存在多少个内存表

——解决方案——————–
受内存限制。
——解决方案——————–
20万记录就慢说明设计和SQL语句以及参数的问题都不少,应该还有很大的优化空间。
先加大这几个参数试试
#Temp table
tmp_table_size=128M
max_heap_table_size=128M
max_tmp_tables=128
以上参数值能支撑我们网站100多万记录的数据库,当然还有其他参数

最重要的是设计,MySQL在不同硬件条件时能应对的数据量规模不同,不好的设计使系统很快就达到了环境的上限,如这个贴http://topic.csdn.net/u/20100325/10/801d54f6-121b-4431-873d-e061dc60c6a6.html的问题很明显就出在设计上
SQL语句也是重中之重,实践中大部分性能问题就是不够巧妙的SQL语句造成的,如 select * from tab where field like ‘…%’ limit m,n 之类的SQL语句
第三就是分布式布署,比如您已经采用的“复制”,是很好的办法

……等等
——解决方案——————–

探讨

select * from 之

这样的sql 如何优化改写??

——解决方案——————–

探讨

select * from tab where field like ‘…%’ limit m,n 这个语句解释 是走 索引 的

select * from tab where left(field,2)=’sa’ 这个语句是不走索引 的 。

第三就是分布式布署 (当前我做的是15个表 的复制 发现在从机上执行 sql 比主机器 要慢很多 )


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:系统究竟允许存在多少个内存表,该怎么解决

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址