论坛网站mysql优化_MySQL优化 之 Discuz论坛优化

news/2024/5/11 14:44:28/文章来源:https://blog.csdn.net/weixin_42500454/article/details/113716200

作/译者:叶金荣(Email: ),来源:http://imysql.cn 一. 前言 近日由于需要,对discuz论坛(简称dz)进行优化,当然了,只是涉及到数据库的优化. 先说一下服务器及dz的数据量,2 * Intel(R) Xeon(TM) CPU 2.40GHz, 4GB mem, SCISC硬盘. MySQL 版本为 4.0.23. 数

作/译者:叶金荣(Email:

test.jsp?url=http%3A%2F%2Fimysql.cn%2Ffiles%2Fpictures%2Femail.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fchinalinuxzend%2Farticle%2Fdetails%2F1768842),来源:http://imysql.cn

一. 前言

近日由于需要,对discuz论坛(简称dz)进行优化,当然了,只是涉及到数据库的优化.

先说一下服务器及dz的数据量,2 * Intel(R) Xeon(TM) CPU 2.40GHz, 4GB mem, SCISC硬盘.

MySQL 版本为 4.0.23. 数据表情况:

cdb_attachments 2万

cdb_members 10万

cdb_posts 68万

cdb_threads 7万

二. 缓存优化

在 my.cnf 中添加/修改以下选项:

#取消文件系统的外部锁

skip-locking

#不进行域名反解析,注意由此带来的权限/授权问题

skip-name-resolve

#索引缓存,根据内存大小而定,如果是独立的db服务器,可以设置高达80%的内存总量

key_buffer = 512M

#连接排队列表总数

back_log = 200

max_allowed_packet = 2M

#打开表缓存总数,可以避免频繁的打开数据表产生的开销

table_cache = 512

#每个线程排序所需的缓冲

sort_buffer_size = 4M

#每个线程读取索引所需的缓冲

read_buffer_size = 4M

#MyISAM表发生变化时重新排序所需的缓冲

myisam_sort_buffer_size = 64M

#缓存可重用的线程数

thread_cache = 128

#查询结果缓存

query_cache_size = 128M

#设置超时时间,能避免长连接

set-variable = wait_timeout=60

#最大并发线程数,cpu数量*2

thread_concurrency = 4

#记录慢查询,然后对慢查询一一优化

log-slow-queries = slow.log

long_query_time = 1

#关闭不需要的表类型,如果你需要,就不要加上这个

skip-innodb

skip-bdb

以上参数根据各自服务器的配置差异进行调整,仅作为参考.

三. 索引优化

上面提到了,已经开启了慢查询,那么接下来就要对慢查询进行逐个优化了.

1. 搜索优化

搜索的查询SQL大致如下:

SELECT t.* FROM cdb_posts p, cdb_threads t WHERE

t.fid IN ('37', '45', '4', '6', '17', '41', '28', '32', '31', '1', '42')

AND p.tid=t.tid AND p.author LIKE 'JoansWin'

GROUP BY t.tid ORDER BY lastpost DESC LIMIT 0, 80;

用 EXPLAIN 分析的结果如下:

mysql>EXPLAIN SELECT t.* FROM cdb_posts p, cdb_threads t WHERE

t.fid IN ('37', '45', '4', '6', '17', '41', '28', '32', '31', '1', '42')

AND p.tid=t.tid AND p.author LIKE 'JoansWin'

GROUP BY t.tid ORDER BY lastpost DESC LIMIT 0, 80;

+-----------+------------+----------+--------------+-------------+-----------+-------------+

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra

+-----------+------------+----------+--------------+-------------+-----------+-------------+

| 1 | SIMPLE | t | range | PRIMARY,fid | fid | 2 | NULL | 66160 | Using where;

Using temporary; Using filesort |

| 1 | SIMPLE | p | ref | tid | tid | 3 | Forum.t.tid | 10 | Using where

| +----+-------------+-------+-------+---------------+------+---------+-------------+-------+

---------

只用到了 t.fid 和 p.tid,而 p.author 则没有索引可用,总共需要扫描

66160*10 = 661600 次索引,够夸张吧 :(

再分析 cdb_threads 和 cdb_posts 的索引情况:

mysql>show index from cdb_posts;

+-----------+------------+----------+--------------+-------------+-----------+----------

---+----------+--------+------+--+

| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part |

Packed | Null | Index_type | Comment | +-----------+------------+----------+--------------+----

---------+-----------+-------------+----------+--------+------+--+

| cdb_posts | 0 | PRIMARY | 1 | pid | A | 680114 | NULL | NULL |

| BTREE | |

| cdb_posts | 1 | fid | 1 | fid | A | 10 | NULL | NULL |

| BTREE | |

| cdb_posts | 1 | tid | 1 | tid | A | 68011 | NULL | NULL |

| BTREE | |

| cdb_posts | 1 | tid | 2 | dateline | A | 680114 | NULL | NULL |

| BTREE | |

| cdb_posts | 1 | dateline | 1 | dateline | A | 680114 | NULL | NULL |

| BTREE | |

+-----------+------------+----------+--------------+-------------+-----------+---

以及

mysql>show index from cdb_threads;

+-----------+------------+----------+--------------+-------------+-----------+-------------+

----------+--------+------+-----+

| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part |

Packed | Null | Index_type | Comment | +-----------+------------+----------+--------------+-----

--------+-----------+-------------+----------+--------+------+-----+

| cdb_threads | 0 | PRIMARY | 1 | tid | A | 68480 | NULL | NULL |

| BTREE | |

| cdb_threads | 1 | lastpost | 1 | topped | A | 4 | NULL | NULL |

| BTREE | |

| cdb_threads | 1 | lastpost | 2 | lastpost | A | 68480 | NULL | NULL |

| BTREE | |

| cdb_threads | 1 | lastpost | 3 | fid | A | 68480 | NULL | NULL |

| BTREE | |

| cdb_threads | 1 | replies | 1 | replies | A | 233 | NULL | NULL |

| BTREE | |

| cdb_threads | 1 | dateline | 1 | dateline | A | 68480 | NULL | NULL |

| BTREE | |

| cdb_threads | 1 | fid | 1 | fid | A | 10 | NULL | NULL |

| BTREE | |

| cdb_threads | 1 | enablehot | 1 | enablehot | A | 2 | NULL | NULL |

| BTREE | | +-------------+------------+-----------+--------------+-------------+------

看到索引 fid 和 enablehot 基数太小,看来该索引完全没必要,不过,对于fid基数较大的情况,则可能需要保留>该索引.

所做修改如下:

ALTER TABLE `cdb_threads` DROP INDEX `enablehot`, DROP INDEX `fid`, ADD INDEX (`fid`, `lastpost`);

ALTER TABLE `cdb_posts` DROP INDEX `fid`, ADD INDEX (`author`(10));

OPTIMIZE TABLE `cdb_posts`;

OPTIMIZE TABLE `cdb_threads`;

在这里, p.author 字段我设定的部分索引长度是 10, 是我经过分析后得出来的结果,不同的系统,这里的长度也不同,最好自己先取一下平均值,然后再适当调整.

现在,再来执行一次上面的慢查询,发现时间已经从 6s 变成 0.19s,提高了 30 倍.

这次先到这里,下次继续 ^_^

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_743751.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wordpress windows安装_从零开始服务器搭建wordpress网站详细建站教程

说起第一次使用Wordpress建站,相信大部分人的印象都是虚拟主机、空间搭网站,因为便宜、省心,自己搭个小站放上去也算足够,但是随着各种技术的迅速发展,原来的很多虚拟主机已经不能再满足Wordpress配置要求,…

seo管理php源码_如何去理解SEO中的动态页面?

动态网页并不是像网页上显示的动画、视频或者滚动的字幕那样视觉上的动态,它可以表现为包含各种动画,同时也可以是纯文本形式的,动态网页的动态是体现在其网页编程技术上的。通过PHP、ASP、JSP以及CGI等动态网页技术和数据库编程技术制作而成…

netty并发量一般多少_网站收录量一般为多少?如何提升收录量?

网站想要在移动互联网中脱颖而出,想要与竞争对手以最快的速度拉开差距,就必须借助有力的武器来实现。而网站优化是最能提升网站知名度的最有效做法,它是利用搜索引擎对内容和链接来识别、抓取网站的。意思就是如果一个网站没有更新内容或者内…

html浏览器获取域账号密码,Firefox/chrome等FTP域内权限限制不严 可通过XSS遍历网站目录并获取源码...

2013-06-01 15:20浏览器在FTP域内的CSRF问题,虽然遵守了同源策略,但不代表解决了所有问题。“可通过XSS遍历网站目录并获取源码”的环境要求有些苛刻,理论意义大于实际意义。详细说明:只在IE9、firefox、chrome上做了测试&#xf…

2021重庆高考成绩查询密码,2021重庆高考成绩查询网站入口,打不开登录不进去解决方法...

2018重庆高考成绩查询网站入口还未公布,以下是小编整理的2017重庆高考成绩查询网站,请参考!2017年重庆高考成绩将于6月23日13点公布。届时考生可登录重庆市教育考试院网站(http://www.cqksy.cn)或重庆招考信息网(http://www.cqzk.com.cn)&…

网站选择按钮点击无反应?_收藏|良心网站推荐——趣味篇

上一篇文章分享了十个实用的良心网站,这次分享5个有趣的网站,绝对是消除无聊的神器。满满干货,建议收藏!话不多说,上硬货。1、太鼓ウェブ - Taiko Web太鼓达人网页版。这个就是完全模仿了太鼓达人街机版,里…

php 支付宝wap接口,呕心之作:支付宝的手机网站支付接口的应用,呕心之作_PHP教程...

呕心之作:支付宝的手机网站支付接口的应用,呕心之作由于去年做手机Portl接口的工作,需要使用支付宝的支付,于是手机网站支付接口就成了首选。1.首先下载接口包支付宝商家服务中心链接:https://b.alipay.com/login.htm?…

php的网站换服务器地址,网站更换域名完整攻略

很多SEOER都遇到过这样的问题,网站发展了一段时间,关键词排名有了进展,流量增加了许多,网站开始有了收入,这时候便有了更换域名的想法,但是又担心更换域名会影响网站的权重和排名,进入左右为难的…

退出服务器维护,如何查看docker进程退出的原因_网站服务器运行维护

如何通过命令行查看docker服务是否已启动_网站服务器运行维护通过命令行查看docker服务是否已启动的方法是:通过运行命令【systemctl status docker】查看docker服务的运行状态,然后根据输出信息进行判断即可。问题还原:最近的docker容器经常…

网站下面的文件找不到_这5个优质资源网站,花钱你都找不到!

马上就要回家过年了,相信大家都很兴奋吧,平时工作特别忙碌,没有时间玩耍,游乐,有的甚至连看个电影都要安排好久,好不容易有时间看了吧,又为找不到资源发愁,你说烦人不烦人&#xff1…

在线图像识别相似图片_几个有趣的在线建站模板工具评测

现在各种在线辅助工具越来越多,一键式操作的快捷工具似乎总是那么受欢迎,特别是对小白朋友来说,他们希望用最简单的操作来完成自己心仪的作品,比如在线制作网站,在线设计等,今天小编给大家评测了一些在线工…

怎么绕过论坛回复_SEO做博客外链(评论/回复)应该怎么做才有用呢?

博客外链分为自建博客平台和博客评论回复两种外链形式,而本文主要讲述的是针对评论和回复的这种超级省事的博客外链创建技巧。那这种博客外链应该怎么做呢?网站为了提升关键词排名,SEO人员从站外做优化的最重要手段就是发外链,像2…

UML辅助网站规划和设计指南

一、概述 Web网站往往具有复杂与高度动态的特点。为了让Web应用在短时间之内开始运作,开发周期应该尽量地短。许多时候,开发者直接进入编写代码这一阶段,却不去仔细考虑自己想要构造的是什么样的网站以及准备如何构造:服务器端代码…

网站迁移到新服务器的步骤_网站迁移到日本服务器的正确做法

不管是个人站长还是企业站,都会遇到网站迁移的情况,比如说,为了拓展海外客户群体,将网站迁移到日本服务器,但是迁移网站,比如说将网站迁移到日本服务器,不仅仅是将数据上传到日本服务器上&#…

用 ASP.NET 2.0 改进的 ViewState 加快网站速度

如果您是个经验丰富的 ASP.NET 开发人员,一提起 ViewState ,您可能会不寒而栗,因为您想到的是大量通过“鸡尾酒吸管”吸入的 Base64 编码数据。除非采取步骤进行预防,否则大部分 ASP.NET 页面将有大量辅助数据被存储在一个名为 __…

可以ping通 打不开网页_如何快速解决“网站打不开”的问题?

不管是我们普通用户,还是网站管理员,没有很强大的技术能力的话,在遇到自己的网站打不开的情况可能会很着急,为了让大家更高效快速的应对“网站为啥打不开了”这个问题,今天我们就说一下网站打不开的原因有哪些&#xf…

seo查询工具源码_百度快照排名查询,显示次序工具分享,SEO优化从业者必备工具...

前一段时间看到网站SEO优化大牛,他们的百度搜索关键词之后打开的页面,很高端很神奇不知道是怎么回事,最近在偶然间安装浏览器插件的时候发现原来是插件实现的。这样我们在做百度快照排名的用上这样的工具简直是如虎添翼,因为这个插…

python写网站容易崩吗_刚刚,Python内幕被爆出!老码农:没控制住,心态已崩!...

作为一个老农民,这次我的心很凉! 原因很简单:前天晚上,当我在国内最大的同性组织的一个中心浏览时,我发现了这样一条信息: Python 116K 超过 C、JS, 薪酬排行第一(数据来自最大的招聘网站india.…

vc 功能源码 2020_非常适合运输公司,物流公司,的商业网站,附快速建站源码程序...

YIWOHE(今日头条号:yiwohe)资源储备专栏快速按需打搭建个性化站点系统平台的第5期,推荐非常适合运输公司,物流公司,的商业网站,附快速建站源码程序,一点安装部署,手机电脑平板一站式访问&#x…

前端seo优化_前端后端分离,怎么解决SEO优化的问题呢?

解决题主的问题,首先得先想明白什么是SEO,然后再说前后端分离情况下如何做SEO优化。我们假设这个产品是一个新产品,他需要做SEO,那么到底什么是SEO呢?SEO的缩写是『Search Engine Optimization』,搜索引擎优…