我的Myqls数据库中有2个数据表,每个数据表都有超过3千万条记录,查询效率很低,有没有什麽好的办法优化?

1、如何优化数据库?2、如何优化PHP代码?... 1、 如何优化数据库?
2、如何优化PHP代码?
展开
 我来答
willyyw
2011-01-24 · TA获得超过652个赞
知道小有建树答主
回答量:486
采纳率:0%
帮助的人:406万
展开全部
首先换数据库,MySQL处理这个数量级数据比较吃力。推荐你用DB2 或ORACLE

如果不能换,检查一下存储引擎用InnoDB,如果是,检查
innodb_flush_log_at_trx_commit 这个选项,是否是1
如果是1 用SET AUTOCOMMIT = 0 ,提高数据修改速度

PHP优化需要
MySQL Slow Log 分析工具分析日志:mysqldumpslow或mysqlsla比较不错。

Explain/ DESC 分析SQL 的执行情况和SHOW PROCESSLIST
使用SHOW PROCESSLIST 看是否有锁表情况,
设置 my.cnf 中的long-query-time 和log-slow-queries 记录服务器那些SQL执行速度比较慢

根据上述情况查看对对应的SQL语句进行优化

优化服务器性能,用RAID5(SAN),加内存本身的升级,提高硬盘I/O性能。

数据库总体性能优化:
数据表最好能拆成小表。
数据库切片,分到不用的服务器上,

数据库访问性能优化
修改my.cnf, 下面是影响比较大的:
innodb_flush_log_at_trx_commit 设置为0

如果比下面值大就不用调整了:
query_cache_size 设置为16M
sort_buffer_size 设置为16M
record_buffer 设置为16M
key_buffer_size 设置为8M
innodb_buffer_pool_size 设置为32M

下面是建议设置的
table_cache 设置为512
read_buffer_size 设置为16M
myisam_sort_buffer_size设置为16M
innodb_additional_mem_pool_size 设置为128M
innodb_log_file_size 设置为256M
innodb_log_buffer_size设置为8M

数据库表优化,
1 建立相应的INDEX
2 统一编码,MySQL的默认编码是Latin1,不支持中文,需要把数据库的默认编码修改为gbk或者utf8
show variables like 'character%' 查看

另外表的编码也要与数据库统一
匿名用户
2011-01-24
展开全部
1.适度的正规化,分表的优先目标是把字符串多的栏位分出来
2.再搭配索引
3.查询前使用LOCK TABLES,查完sql记得再加上UNLOCK TABLES

参考资料: me

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
13708248
2011-01-24 · TA获得超过121个赞
知道小有建树答主
回答量:303
采纳率:0%
帮助的人:190万
展开全部
1.两个表要建相关的查询条件的索引.要及时清理不需要的数据.就是备份走以前的数据.不要一直不管它.这样很危险.另外这个和机器的配置也有关系的.如硬盘速度.
建议还是备份走以前的数据.建索引.
2.代码其实没有什么要优化的只要写的差不多.就没有什么问题.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Rachel_David
2011-01-24 · 超过10用户采纳过TA的回答
知道答主
回答量:24
采纳率:0%
帮助的人:0
展开全部
创建索引;hibernate的分页查询;查询结果建立缓存;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式