- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我即将完成一个大型网站的开发。
唯一的问题是我总是遇到 MySQL 消失错误...
我在 stackoverflow 上发布了另一个问题但没有得到我的答案
所以我的问题是 Joomla 是否足够适合或适合大型用户(500 万用户)的 CMS 解决方案?
我花了近 5 个月的时间来开发这个......现在虽然我使用的是 Quad 专用服务器(2 GB RAM),但我觉得 Joomla 可能不是这个大型数据库网站的正确解决方案......
编辑:我只是想澄清一下,我不是在谈论流量......它是全新的网站。我说的是一些表的行数
请指教
MySQL 服务器信息:
MySQL error log: /var/lib/mysql/eta.etalenthunt.com.err
root@eta [~]# cat /etc/my.cnf
[mysqld]
safe-show-database
open_files_limit = 5000
tmp_table_size = 32M
max_heap_table_size = 32M
query_cache_limit=1M
query_cache_size=100M ## 32MB for every 1GB of RAM
query_cache_type=1
max_connections=100
collation_server=utf8_unicode_ci
character_set_server=utf8
delayed_insert_timeout=40
interactive_timeout=30
wait_timeout=60
connect_timeout=60
thread_cache_size=64
key_buffer=32M ## 32MB for every 1GB of RAM
join_buffer=1M
max_connect_errors=20
max_allowed_packet=16M
table_cache=2048
record_buffer=1M
sort_buffer_size=3M ## 1MB for every 1GB of RAM
read_buffer_size=3M ## 1MB for every 1GB of RAM
read_rnd_buffer_size=3M ## 1MB for every 1GB of RAM
thread_concurrency=8 ## Number of CPUs x 2
myisam_sort_buffer_size=16M
innodb_file_per_table=1
innodb_buffer_pool_size=18M ## (>= 18M)
我正在运行 dedi 服务器 XEON QUAD 2 GB
最佳答案
好的!没问题。您必须意识到这是 Joomla 和 Wordpress 的常见问题(正如我在对您的另一个问题的其他回答中向您解释的那样:Is Joomla 2.5 much faster than Joomla 1.5 Querywise)
我发现这是一个在任何 Joomla CMS 中都无法轻松处理的问题!但有一些方法(在我看来)可以减少各处的负载。
您可以按照这两个步骤进行操作,可能还有更多步骤,但让我们先尝试这两个步骤:
解决方案#1:将数据库拆分为 2 个或更多数据库(我将解释如何做到这一点)
解决方案 #2:破解 Joomla 核心以访问用户和 session 表
解决方案 #3:将 jos_users 表拆分为相等数量的记录
解决方案 #4:编写一个清理 session 表的 cronjob
第 1 步:将 jos_users 和 jos_session 表放入两个新的独立数据库中。将它们称为 db_jos_user 和 db_jos_session。
第 2 步:从主数据库中删除 jos_users 和 jos_session 表。
第 3 步:使用各自的名称为每个 View 创建 View ,并使用该数据库名称指向表。
CREATE VIEW jos_users AS SELECT * from db_jos_user.jos_users;
CREATE VIEW jos_session AS SELECT * from db_jos_session.jos_session;
这实际上会减少数据库的大小并减少数据库的负载。 Joomla 不会感到惊讶,它不会知道它是 View 还是其后面的表格。
破解用户身份验证插件并通过创建数据库的新实例(您在以下解决方案中拆分)来对来自不同数据库的用户进行身份验证。您可以开发一个逻辑来确定为哪些用户选择哪个表。这样您就可以减少数据库的负载。您可能还必须实现一个逻辑来将用户插入/更新到各自的数据库中。这是您必须在核心用户组件和用户登录模块内部进行工作的地方。
您可以将表拆分为更多数据库。在您的自定义身份验证模块中,尝试使用“union”或一一查询在对所有数据库的单个查询中一一命中数据库(这样您可能会节省一些数据库命中)。您可以根据用户名对它们进行排序,这样当他们登录时您就知道要访问哪个数据库。这将大大减少您的点击次数。
编写一个 cron 作业,该作业按设定的时间间隔运行,以清理 session 表。 session 表包含属于访客或用户的所有信息。因此,您必须记住定期清洁它。如果用户 session 处于非事件状态最多 20 分钟,或者您想要删除它,您也可以执行此操作。您可能需要在您的网站上放置一条通知,告知用户 session 如果事件时间超过 20 分钟,将被自动删除或更用户友好的内容。
尽管当您将数据库和一个表分割成许多部分时,这看起来很愚蠢,但实际上这是您这样做的理想时机。它不会花费您太多时间,也不会损害您的 Joomla/数据库。不过,逆转很容易!
我希望所有这些对你有用。我认为一起完成所有这些工作没有任何问题,除了它会给您带来工作开销,但实际上当您的数据库中有超过 500 万条记录时,这是可以接受的。
我真的非常希望这对您一起完成所有这些事情有很大帮助。
关于php - Joomla 可以处理 jos_users 表中数百万用户的查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10404161/
我有三张 table 。表 A 有选项名称(即颜色、尺寸)。表 B 有选项值名称(即蓝色、红色、黑色等)。表C通过将选项名称id和选项名称值id放在一起来建立关系。 我的查询需要显示值和选项的名称,而
在mysql中,如何计算一行中的非空单元格?我只想计算某些列之间的单元格,比如第 3-10 列之间的单元格。不是所有的列...同样,仅在该行中。 最佳答案 如果你想这样做,只能在 sql 中使用名称而
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我正在为版本7.6进行Elasticsearch查询 我的查询是这样的: { "query": { "bool": { "should": [ {
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
是否可以编写一个查询来检查任一子查询(而不是一个子查询)是否正确? SELECT * FROM employees e WHERE NOT EXISTS (
我找到了很多关于我的问题的答案,但问题没有解决 我有表格,有数据,例如: Data 1 Data 2 Data 3
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
我从 EditText 中获取了 String 值。以及提交查询的按钮。 String sql=editQuery.getText().toString();// SELECT * FROM empl
我有一个或多或少有效的查询(关于结果),但处理大约需要 45 秒。这对于在 GUI 中呈现数据来说肯定太长了。 所以我的需求是找到一个更快/更高效的查询(几毫秒左右会很好)我的数据表大约有 3000
这是我第一次使用 Stack Overflow,所以我希望我以正确的方式提出这个问题。 我有 2 个 SQL 查询,我正在尝试比较和识别缺失值,尽管我无法将 NULL 字段添加到第二个查询中以识别缺失
什么是动态 SQL 查询?何时需要使用动态 SQL 查询?我使用的是 SQL Server 2005。 最佳答案 这里有几篇文章: Introduction to Dynamic SQL Dynami
include "mysql.php"; $query= "SELECT ID,name,displayname,established,summary,searchlink,im
我有一个查询要“转换”为 mysql。这是查询: select top 5 * from (select id, firstName, lastName, sum(fileSize) as To
通过我的研究,我发现至少从 EF 4.1 开始,EF 查询上的 .ToString() 方法将返回要运行的 SQL。事实上,这对我来说非常有用,使用 Entity Framework 5 和 6。 但
我在构造查询来执行以下操作时遇到问题: 按activity_type_id过滤联系人,仅显示最近事件具有所需activity_type_id或为NULL(无事件)的联系人 表格结构如下: 一个联系人可
如何让我输入数据库的信息在输入数据 5 分钟后自行更新? 假设我有一张 table : +--+--+-----+ |id|ip|count| +--+--+-----+ |
我正在尝试搜索正好是 4 位数字的 ID,我知道我需要使用 LENGTH() 字符串函数,但找不到如何使用它的示例。我正在尝试以下(和其他变体)但它们不起作用。 SELECT max(car_id)
我有一个在 mysql 上运行良好的 sql 查询(查询 + 连接): select sum(pa.price) from user u , purchase pu , pack pa where (
我是一名优秀的程序员,十分优秀!