问题标签 [mariadb]
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 - nodejs mysql不能与mariadb一起使用
我有一个使用 mysql 模块的 node.js 脚本,它在安装了 mysql 的本地机器上运行良好......当我尝试在我的服务器上运行它(安装 MariaDB)时,它无法连接到服务器(每个我尝试的选项)。
当我尝试安装 mariasql 模块时,它失败了......
谁能建议该怎么做?还是支持两者的模块?
谢谢!
mysql - MariaDB vs Drizzle vs Percona Server vs MySQL
我已经是 MySQL 用户很长时间了。我想开始使用最流行的叉子之间的所有不同变体。问题是我找不到它们之间的任何好的比较,我最终只会尝试所有这些。我担心的是生产方面,因为我不会在生产中试验所有这些分叉。
您是否在生产环境中运行过任何 MySQL 分支?
有什么优势?有什么缺点?
mysql - 根据其他列的顺序从组中选择一个值
问题
假设我有这张桌子tab
(小提琴可用)。
我按 对行进行分组g
,并且对于每个组,我想要一个来自 column 的值v
。但是,我不想要任何值,但我想要来自带有 maximal 的行的值a
,以及来自所有这些的带有 maximal 的行的值b
。换句话说,我的结果应该是
当前解决方案
我知道一个查询来实现这一点:
问题
但我认为这个查询相当难看。主要是因为它使用了一个依赖子查询,这感觉就像一个真正的性能杀手。所以我想知道这个问题是否有更简单的解决方案。
预期答案
我对这个问题最有可能的答案是 MySQL(或 MariaDB)的某种附加组件或补丁,它确实为此提供了一个功能。但我也欢迎其他有用的灵感。任何没有依赖子查询的工作都可以作为答案。
如果您的解决方案仅适用于单个排序列,即无法区分cat
and horse
,请随意提出该答案,因为我希望它对大多数用例仍然有用。例如,100*a+b
一种可能的方法是按两列对上述数据进行排序,同时仍然只使用一个表达式。
我有一些非常老套的解决方案,可能会在一段时间后添加它们,但我会先看看是否有一些不错的新解决方案会先出现。
基准测试结果
由于仅通过查看它们很难比较各种答案,因此我对它们进行了一些基准测试。这是在我自己的桌面上运行的,使用 MySQL 5.1。这些数字不会与任何其他系统进行比较,只能相互比较。如果性能对您的应用程序至关重要,您可能应该使用您的真实数据进行自己的测试。当有新的答案出现时,我可能会将它们添加到我的脚本中,然后重新运行所有测试。
- 100,000 个项目,1,000 个组可供选择,InnoDb:
- MvG 0.166s(来自问题)
- RichardTheKiwi 为0.520 秒
- xdazz 2.199s
- Dems 19.24s (顺序子查询)
- 48.72s for acatt
- 100,000 个项目,50,000 个组可供选择,InnoDb:
- xdazz 为0.356 秒
- 0.640s for RichardTheKiwi
- MvG 0.764s(来自问题)
- 51.50s for acatt
- 对Dems来说太长(顺序子查询)
- 100,000 个项目,100 个组可供选择,InnoDb:
- MvG 0.163s(来自问题)
- RichardTheKiwi 为0.523 秒
- Dems 2.072s (顺序子查询)
- xdazz 为17.78 秒
- 49.85s for acatt
因此,到目前为止,我自己的解决方案似乎并不是那么糟糕,即使使用依赖子查询也是如此。令人惊讶的是,acatt 的解决方案也使用了依赖子查询,因此我认为它的性能要差得多。可能是 MySQL 优化器无法处理的问题。RichardTheKiwi 提出的解决方案似乎也具有良好的整体性能。其他两种解决方案在很大程度上取决于数据的结构。对于许多小团体,xdazz 的方法优于所有其他方法,而 Dems 的解决方案在少数大型团体中表现最好(尽管仍然不是特别好)。
mysql - MySQL系统数据库表可以转换成InnoDB吗?
我最近安装了 MySQL 5.5。我正在InnoDB
用作我所有数据库的引擎。我注意到mysql
数据库默认值及其所有表(用户、数据库等)都是 MyISAM
. 他们不能/不应该有什么理由InnoDB
吗?有谁知道MySQL是否需要mysql
数据库MyISAM
?
mysql - 为什么我的 MySQL 组这么慢?
我正在尝试查询接近 20M 行的分区表(按月)。我需要按 DATE(transaction_utc) 以及 country_id 进行分组。如果我关闭 group by 和聚合返回的行刚刚超过 40k,这并不算多,但是添加 group by 会使查询显着变慢,除非所述 GROUP BY 在 transaction_utc 列上,在这种情况下它变得很快。
我一直在尝试通过调整查询和/或索引来优化下面的第一个查询,并达到了下面的点(大约是最初的 2 倍)但是仍然坚持使用 5s 查询来汇总 45k 行,这似乎是方式太多了。
作为参考,这个盒子是一个全新的 24 个逻辑核心、64GB RAM、Mariadb-5.5.x 服务器,其可用的 INNODB 缓冲池比服务器上的索引空间多得多,因此不应该有任何 RAM 或 CPU 压力。
因此,我正在寻找有关导致速度变慢的原因的想法以及加快速度的建议。任何反馈将不胜感激!:)
好的,进入细节...
以下查询(我实际需要的查询)大约需要 5 秒 (+/-),并返回少于 100 行。
相同查询的 EXPLAIN SELECT 如下所示。请注意,它没有使用 transaction_utc 键。它不应该使用我的覆盖索引吗?
现在谈谈我试图确定发生了什么的其他几个选项......
以下查询(更改分组依据)大约需要 5 秒 (+/-),并且仅返回 3 行:
以下查询(删除分组依据)需要 4-5 秒 (+/-) 并返回 1 行:
以下查询需要 .00X 秒 (+/-) 并返回约 45k 行。这对我来说表明,我们最多只尝试将 45K 行分组到少于 100 个组中(如在我的初始查询中):
表模式:
mysql - 将转储文件(.dbo 文件)加载到 mariadb 数据库中
我有一个.dbo
文件,我需要将转储文件加载到 mariadb 中。怎么可能?在 MySQL 我试过这样:
mysql -u root -p dbname -e " source path/test.dbo"
但同样不适用于 MariaDB。
有什么想法???如何在 PostgreSQL 中如此相同?
mariadb - 更改 mariadb 中的数据目录
我正在尝试更改mariadb中的数据目录,在更改ini文件中的数据目录路径后,尝试重新启动服务,它无法启动!显示如下警告:
在 MySQL 中,数据目录更改工作正常。但我不知道为什么同样不能使用mariadb
.
只有默认路径有效...
mysql - LOAD DATA INFILE 在 mariadb 中不起作用
我正在尝试从 mysql 迁移到 mariadb。在这个时候,我可能会遇到 mariadb 的问题。
当我可以尝试将数据文件加载到表中时,它会显示如下错误:
SQL 错误 (29): 找不到文件'C:/Documents and Settings/Administrator/Local Settings/Temp/SAMPLE/DATA_TEMP1351761841668/SampleFile0' (Errcode: 2)
但是该文件已经存在于路径中......
另一点是相同的命令成功地适用于 MySQL。MariaDB 有权限问题吗?
请参阅下面我的查询:
当改变路径时,就像"C:/SampleFile0",
它正常工作一样。文件夹中的路径Administrator
不起作用。
任何人都可以在这方面帮助我吗???我是 MariaDB 的新手。
mysql - MariaDB 中的 TRUNCATE TABLE 挂起
我正在尝试从 mysql 迁移到 mariadb。这次我可以面对 mariadb 的另一个问题。
有时TRUNCATE TABLE
查询会挂起。但是在 MySQL 中,这个问题并没有发生。
任何人都可以在这方面帮助我吗???我是 MariaDB 的新手。
mysql - 仅适用于 MyIsam 存储引擎的最常见和最重要的 SQL 命令?
最近在我们的一个讨论中提到,使用基于 MyISAM 的旧 MySQL 部署移动旧的遗留系统不能轻易地被基于 InnoDB 的 MySQL 或 MariaDB 部署取代。出现的原因是到处都有太多的 MyISAM only SQL 命令。我还没有看到代码,所以我想知道他们指的是什么 SQL 命令。
我只知道下面几个与表锁定相关的。它可能在理论上仍然可以与 InnoDB 一起使用,但更适合 MyISAMMERGE
和MEMORY
支持表锁定的存储引擎。
如果还有更多,或者点我收藏一下。将不胜感激。
- 编辑 -
我会把我找到的所有其他东西都放在这条线下面。