问题标签 [mariadb-10.4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - mysql中同一张表的联合
我有来自同一张表的三个查询输出。但必须将所有 3 合并到单个 mysql 查询
所有三个输出都是不同的值,彼此没有关系。我只需要把它相互平行。我尝试使用 union with the 3 quires 的实际输出,但没有达到预期的结果。
提前致谢,,,,
mysql - MariaDB 10.4 随机性能下降
我有一个具有以下参数的服务器:
- 操作系统:Ubuntu 18.04.4 LTS x86_64
- 主机:X11DPi-N(T)
- 内核:4.15.0-112-generic
- CPU:Intel Xeon Silver 4214 (48) @ 2.201GHz
- GPU:ASPEED Technology, Inc. ASPEED 图形系列
- 内存:18552MiB / 96336MiB
- SSD 三星 MZQLB960HAJR-00007 894.3G x 2
随着安装5.5.5-10.4.12-MariaDB-1:10.4.12+maria~bionic
。在此屏幕截图中显示了标准数据库负载:
所以我每秒大约有 400-500 次选择(主要来自具有 50 万条记录的不太大的表),每秒 100-190 次更新,以及大约 50-150 次同时连接。
我的问题是:有时,没有明显的原因,服务器有 2000-3000 个打开的连接/进程。根据SHOW FULL PROCESSLIST
它们是标准 SQL 请求,但具有“发送数据”状态和 400-500 秒的运行时间。当然,此时服务器死机,无法正常运行。我说“没有明显的原因”,因为此时我没有看到用户数量增加或网站上的活动增加。此外,重新启动 MariaDB 服务或完全重新启动服务器有助于摆脱这种情况,但并非总是如此:有时即使在重新启动后,我几乎会立即获得相同的 2000-3000 个冻结进程。
有没有人遇到过类似的数据库行为?我会很感激任何想法。
升级版:
我所有的 SELECT 只调用一个表(约 50 万条记录,没有
JOIN
和/或子查询),而且大多数都有LIMIT 1
,所以没有那么多数据。错误日志显示了很多这样的记录:
2020-08-26 22:12:35 787380 [Warning] Aborted connection 787380 to db: ... (Got timeout reading communication packets)
innodb_lock_wait_timeout
为 50(默认)慢查询日志没有显示异常
我的
optimizer_switch
设置:index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=on,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on,condition_pushdown_for_subquery=on,rowid_filter=on,condition_pushdown_from_having=on
sql - 如何从子表中选择一个随机id?
我正在使用 10.4.13-MariaDB。我有一个父表和一个子表。
父表(任务)
在界面中看起来像
And I have a child table (puzzles) - 谜题表 - 谜题只能属于儿童主题
我想从每个级别获得一个随机拼图。如何编写正确的查询?
预期结果:
我的小提琴:https ://dbfiddle.uk/?rdbms=mariadb_10.4&fiddle=7bed2a19a0f98abccbe06ba9e0ae358b
database - MariaDB - 10.4.14 Windows 2019 中的静态数据加密
我不知所措,而且时间紧迫,我很快就没有选择了。在这里发布是我最后一次尝试让这个工作。我试图让我的 MariaDB 10.4.14 测试环境完全加密静态数据(包括日志、tmp 文件等)。我已按照所有说明进行操作,包括钥匙孔必须在 ANSI 中,但我仍然收到相同的错误消息:
这是我在 my.cnf 文件中的内容:
密钥文件目前未加密;一旦我弄清楚了,我最终会加密它。
我已进入数据库并确认 file_key_management 插件已列在 ALL_PLUGINS 表中,但显示为“已禁用”。当我尝试手动将其更改为“活动”时,我收到“root@localhost 没有权限”的错误(我想知道这是否是我的问题的根源,但不知道如何纠正它)。
任何想法或想法都会受到赞赏。我花了几天的时间阅读我能找到的所有东西,我必须在星期二之前完成这项工作,并且非常沮丧。
谢谢克里斯
mysql - 如何在mysql中找到在30秒内重复特定列3次以上
mysql查询:
有了上面的信息,ICX 应该会和我们的请求一起显示。
我想在 30 秒内显示重复基列超过 3 次谢谢
mysql - MariaDB 10.4 对大量查询进行微调
我有一个具有以下参数的服务器:
随着安装5.5.5-10.4.12-MariaDB-1:10.4.12+maria~bionic
。我有一个 PHP 编写的项目,其中有相当多的数据库查询(每秒约 400-500 次选择 + 每秒约 200-300 次更新)。问题是:在大量用户活动期间数据库相当慢,但在其他任何时候都可以。我的my.cfg
文件如下:
最近我进行了更改thread_handling = pool-of-threads
,并且wait_timeout = 3
:它提高了性能,但总体上并没有解决问题。对于如何加快速度或消除一些“瓶颈”的任何想法,我将不胜感激。
更新:
使用 InnoDB,而不是 MyISAM
已经是这样了。
打开慢日志以查找最慢的查询。
好吧,我所有的 SELECT 只调用一个表(约 50 万条记录,没有 JOIN 和/或子查询),而且大多数都有 LIMIT 1,所以数据量不大。
让我们看看 SHOW CREATE TABLE。
好的,这是SHOW CREATE TABLE
这个主表:
innodb_buffer_pool_size 可能太小——你有多少数据?MariaDB 有多少 RAM 可用?
好吧,MariaDB 在独立服务器上运行,没有任何其他软件(PHP、Apache 等)。所以我在这台服务器上有 96Gb RAM,所有这些都可以被 MariaDB 使用。
innodb_buffer_pool_instances 太大;应该是 - buffer_pool_size/1G
你能澄清一下吗?在我的情况下,它应该是 buffer_pool_size/96Gb,或者?我认为buffer_pool_size
在我的配置中有它的默认值。
如果 innodb_flush_log_at_trx_commit 的值是多少?
是的1
,但我试过2
没有结果。
php - 两个日期之间的时间
我想以分钟为单位计算两个日期之间的时间,同时只包括 和 之间的时间08:00:00
,16:30:00
也不包括周六和周日。我怎样才能做到这一点?以下是我的代码,它通常只是计算两个日期之间的时间。
我已经尝试了以下代码,但仍然无法正常工作
mysql - 如何杀死 Mysql Pending 线程?
我正在使用带有连接到 MySQL 数据库的 PHP 应用程序的 Ubuntu 18.04。通常,使用 Mytop,我会检测到一些卡住的 MySQL 线程:
正如你在上面看到的,一些线程被卡住了 19k 秒。这有时会使我的 cpu 过载,所以我的问题是:
如果在 X 秒内未解决线程,是否有任何方法可以自动执行此操作以自动终止线程?这样做的目的是消除 CPU 的过载。
据此,它是我服务器上的 PHP 应用程序,只是我不知道如何解决该部分的问题:
SPID USER PRI VIRT RES SHR S CPU MEM% 命令 124 megax 20 335M 19254 21212 S 100.00% 0.0 php-fpm:池 www 125 megax 20 335M 19254 21212 S 100.00% 0.0 php-fpm:池 www 126 megax 20 2121 33 100.00% 0.0 php-fpm:池 www 127 megax 20 335M 19254 21212 S 100.00% 0.0 php-fpm:池 www
mariadb-10.4 - 没有索引提示的 MariaDB MAX_JOIN_SIZE 错误
有 max_join_size = 300M 的 MariaDB 10.4.14 和内部有约 150,000 条记录的硬币 InnoDB 表。
一个足够简单的查询会产生 MAX_JOIN_SIZE 错误:
但是带有索引提示的相同查询效果很好。命中 ["PRIMARY", "currency_id_idx", "distribution_id"] 甚至 issue_date_idx 中的哪个索引都没有关系,即使没有索引也可以使用 USE INDEX()。
这里有什么问题?为什么在没有提示的情况下查询不起作用?
顺便说一句,这个查询在 MariaDB 10.3.24 上运行良好,在 10.5.5 上不运行
上面的 SELECT 可以在没有索引提示的情况下使用最大可能的 MAX_JOIN_SIZE 值,并且没有最大值 - 1: