AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-30849

Nuno's questions

Martin Hope
Nuno
Asked: 2023-06-25 08:10:12 +0800 CST

如何管理 Cassandra/Scylla 快照?

  • 6

我是 Scylla 的新手,我正在寻找设置适当的备份和恢复解决方案。

我刚刚测试了 running nodetool snapshot -t my_backup,发现它的作用是my_backup在每个键空间和表文件夹内创建一个名为 caled 的快照文件夹。

在我看来,这导致了一些限制:

  1. 我无法轻松地将备份保存在另一台服务器上,以防该特定服务器死亡

  2. 我无法轻松恢复另一台服务器上的备份(例如作为用于生产支持目的/测试的每日快照)

DBA 通常如何将备份存储在另一台服务器中并将整个数据库恢复到另一台服务器中?

--

我注意到的另一个问题是,nodetool listsnapshots输出中似乎没有提及快照创建日期。

所以我似乎无法找到清除旧快照的方法。

例如,如何“删除超过 10 天的快照”或“保留最后 3 个备份”?

backup
  • 1 个回答
  • 36 Views
Martin Hope
Nuno
Asked: 2023-01-01 17:32:25 +0800 CST

我如何按照不仅仅基于“回复”表的列的算法对帖子上的数千个回复进行排序?

  • 5

在我的网站上,对帖子的回复是根据一种算法进行排序的,该算法取决于多种因素:反应、回复质量、用户声誉、报告、回复回复等等……(这些只是几个例子)

在大多数帖子中,对回复进行排序很快,但有些帖子有 20 万条回复,并且还在增长,并且对所有这些回复进行排序需要超过 1 秒。

我知道VIRTUAL GENERATED专栏。然而:

  1. 只有当算法依赖于同一个表的列时,我才能创建一个索引VIRTUAL GENERATED列。

  2. 但是,该算法取决于其他表中的因素,例如用户信誉。

  3. 不幸的是,如果一个表有一个VIRTUAL GENERATED列,就不可能再这样做了ALTER ONLINE TABLE。由于该表每天都在增长,因此带来了巨大的不便。

我有什么替代方案来优化这种复杂的算法,以便快速/实例地对增长很多的帖子的回复进行排序?

Reddit 如何按“最佳/最佳”非常快速地对成千上万的回复进行排序?

这些主要是几年前的帖子,但仍在积极回复。

我正在考虑维护某种“物化视图”,它会在每个新回复或回复发生某些事情时更新(如反应等)。然后根据此视图的键对回复进行排序(与其余部分合并)。但是,这会大大增加所需的存储空间和数据库上的更新/插入。这是一个合理的解决方案吗?

(我使用 InnoDB,每个表的文件,没有分区。MariaDB 10.8。)

mysql
  • 1 个回答
  • 27 Views
Martin Hope
Nuno
Asked: 2022-12-29 16:47:10 +0800 CST

在 MySQL/MariaDB 中,Indexes 的性能会随着越来越大而下降吗?

  • 14

我目前正在探索PARTITION, 对于我拥有的特定用例的使用。
我使用 InnoDB,每个表的文件。玛丽亚数据库 10.8。

我在 MySQL网页上阅读了 Rick 的PARTITION Maintenance 。

我想强调这一点:

WHERE X = 1234-- 这让“分区修剪”只在那个分区中查看。但这并不比INDEX(x)在非分区表上好。而且您可能无论如何都需要该索引;在第一次“修剪”到所需的分区后,您仍然需要索引。没有更快。
一个常见的谬误:“分区将使我的查询运行得更快”。它不会。思考“点查询”需要什么。没有分区,但有适当的索引,有一个 BTree(索引)可以向下钻取以找到所需的行。对于十亿行,这可能有 5 层深。对于分区,首先选择并“打开”分区,然后向下钻取较小的 BTree(比如 4 层)。嗯,较浅的 BTree 的节省被必须打开分区消耗掉了。类似地,如果您查看需要触及的磁盘块,以及其中哪些可能被缓存,您会得出结论,即可能有大约相同数量的磁盘命中。由于磁盘命中是查询的主要成本,因此分区不会获得任何性能(至少对于这种典型情况)。

我完全明白这意味着什么,但我有一个问题:

在 MySQL/MariaDB 中,Indexes 的性能会随着越来越大而下降吗?

对于 10 亿行或 1000 亿行,就性能而言,好的索引是否总是比分区更好?

--

还有一点最接近我想要受益的:

用例#3——热点。这个解释起来有点复杂。鉴于这种组合:
⚈ 一个表的索引太大而无法缓存,但一个分区的索引是可缓存的,并且
⚈ 索引是随机访问的,并且
⚈ 由于更新索引,数据摄取通常是 I/O 绑定
分区可以在 RAM 中保持所有索引“热”,从而避免大量 I/O。

案例 #3 的重大胜利:改进缓存以减少 I/O 以加速操作。

“索引缓存”对 InnoDB 也有效吗?我的理解CACHE INDEX只适用于MyISAM。
或者这是否与它在 InnoDB 缓冲池中有关?

关于减少 I/O,这是否适用于 NVMe 服务器?我%iowait的是 0.00,而我的应用程序是写密集型的。

mysql
  • 3 个回答
  • 1426 Views
Martin Hope
Nuno
Asked: 2022-05-17 02:07:51 +0800 CST

非聚集主键和聚集索引

  • 2

据我了解,在 SQL Server 中,您可以拥有一个非集群的主键,并拥有另一个集群索引。

对我来说,这似乎与只有一个主键和一个额外的唯一键相同。

所以我有两个问题:

  1. 如果主键是非集群的,它会存储所有列吗?还是只有主键列和引用聚集索引的列?

  2. 我刚刚读到,如果 PK 不是聚集索引,那么聚集索引不必是唯一的(但强烈建议这样做)。这是否意味着表可以在具有相同键的行上“随机排序”?

sql-server index
  • 2 个回答
  • 490 Views
Martin Hope
Nuno
Asked: 2021-12-11 16:32:03 +0800 CST

过滤掉当前行的文本包含在下一行的文本中的行

  • 1

我想知道是否可以在 aSELECT中过滤掉当前行上的文本包含在下一行的文本中的行。

例如,我们记录用户执行的“搜索”的图像,“当他们键入时”:

1  something I searched
2  another search
3  this
4  this is a
5  this is a third
6  this is a third search
7  fourth
8  fourth search
9  here's a ry
10 here's a typo

第3-6 行实际上是相同的——只是用户打字有点“慢”,所以我们保存了多次。
第 7-8 行也一样。
第9-10 行是相同的,但有一个错字。

我正在寻找SELECT仅返回以下行的操作:

1  something I searched
2  another search
6  this is a third search
8  fourth search
9  here's a ry
10 here's a typo

这样的事情可能吗?

注意 - 完全不能保证 ID 将按特定用户的顺序排列。所以,我不能简单地JOIN用表本身,由id = id+1. 我能做的就是ORDER BY id把它们整理好。

mysql mariadb
  • 1 个回答
  • 56 Views
Martin Hope
Nuno
Asked: 2021-06-29 15:39:31 +0800 CST

有效地列出组和子组上的排序帖子

  • 0

假设我有一个系统,其中包含组和这些组上的帖子。

一个组可以有多个“子组”

第 1 组 > 第 2 组 > 第 3
组 第 1 组 > 第 2 组 > 第 4
组 第 1 组 > 第 5 组 > 第 6 组
...

所以我有这两张表:

Groups (*GroupId*, Name, ParentGroupId, ...)
Posts (*PostId*, GroupId, UserId, Text, ...)

显示第 3、4 和 6 组的最新 10 个帖子的列表不是问题。一个关于它
的索引( )。GroupIdWHERE GroupId=12345 ORDER BY PostId DESC

但是,我面临的挑战是如何使第 2 组列表帖子直接在第 2 组中创建,而且还针对儿童(第 3 组和第 4 组),以及第 1 组(第 1 组和所有儿童的列表帖子) ,排序)。

我唯一能想到的就是创建一个额外的“索引表”,其中包含PostId每个父组的列表,并使用它来检索帖子。但是,恐怕维护和确保它的准确性会很痛苦(比如使用 a TRIGGER)。如果发生错误,然后我们必须修复索引,再次重建整个索引等等......

有没有更好的方法来做到这一点?
我希望使用更原生和自动维护的东西。

我使用 MariaDB 10.4 和 Sphinx 搜索。

index mariadb
  • 1 个回答
  • 23 Views
Martin Hope
Nuno
Asked: 2021-02-13 17:06:34 +0800 CST

ENUM 列的排序规则会影响它们的大小吗?

  • 0

ENUM当我们说 an具有utf8mb4, 与的字符集时,这是什么意思latin1?

我的理解是,它ENUM拥有一个数字索引(1、2、3、4...),用于标识哪些ENUM值(abc、def、ghi、jkl...)。
如果我使用utf8mb4一个ENUM列,该列使用的存储空间是否比我使用的多latin1?

mysql mariadb
  • 1 个回答
  • 79 Views
Martin Hope
Nuno
Asked: 2017-12-04 06:58:56 +0800 CST

在索引末尾添加主键列

  • 3

如果我有一个包含以下主键的表:

PRIMARY KEY (id)

我想查询某人写的文档(例如显示最新 20 个的预览),按他们的“id”排序,所以我创建了一个索引:

INDEX from_id (from, id)

该索引末尾的“id”是否多余,因为它以主键结尾?
如果是,为什么?

mysql index
  • 1 个回答
  • 156 Views
Martin Hope
Nuno
Asked: 2016-10-26 09:36:33 +0800 CST

UPDATE 不使用 INDEX,但 SELECT 使用

  • 3

我实际上正在努力理解这里的问题。我到处读到说 UPDATE 受益于 WHERE 子句上的索引。

但是,这个查询,

UPDATE `documents` SET `read`="1" WHERE `docid` IN (<subquery>)

似乎没有使用索引。该表documents有一个索引 ondocid和 on read。

当我执行 时EXPLAIN,我看到possible_keys = NULL和rows = 8011008(全表)。子查询确实使用键并读取正确的行(2 行)。

另一方面,这个查询:

SELECT * FROM `documents` WHERE `docid` IN (<subquery>)

确实使用索引docid并且运行速度非常快。它读取的行数比需要的多(根据EXPLAIN),但完全可以接受。

对此有什么解释吗?
我使用 MariaDB 10。

作为一个有趣的注释(关于SELECT),如果在<subquery>我使用 aUNION时,子查询似乎获得了正确的行数,但似乎主查询不使用索引并进行全表扫描。

如果在UPDATEI 中使用JOIN而不是IN,则正确使用索引。我通过使用解决了我的问题JOIN。

mysql index
  • 1 个回答
  • 4771 Views
Martin Hope
Nuno
Asked: 2016-10-24 10:18:31 +0800 CST

对两个索引列使用“或”不使用索引

  • 1

在下面的查询中,from和tid是replies表的索引。

SELECT * FROM `replies`
WHERE `from`="<userId>"
OR `tid` IN (SELECT `tid` FROM `posts` WHERE `from`="<userId>")

通过使用“OR”,它似乎进行了全表扫描(约 300 万行)。EXPLAIN说可能的键是,from但它不使用任何键。

但是,在下面的查询中,frid_lt和frid_gt都被索引了。这两列在一个复杂的索引(frid_lt,frid_gt)中,但frid_gt也有自己的索引。

SELECT `mid` FROM `messages`
WHERE `frid_lt`="<userId>" OR `frid_gt`="<userId>"

这个查询确实使用了两个索引。上面写着“ EXPLAINindex_merge”和“Using sort_union(frid_lt,frid_gt); Using where”。

为什么第一个查询不使用索引合并?
我可以做任何改进以使引擎也使用索引合并吗?

mysql index
  • 1 个回答
  • 256 Views
Martin Hope
Nuno
Asked: 2015-02-08 12:25:55 +0800 CST

utf8 和 utf8mb4

  • 1

我正在将一些表转换为 utf8mb4 以及从 PHP 到 MySQL 到 utf8mb4 的连接。这样我就可以在我的网站上支持用于表情符号的字符。

关于此更改,我有两个问题:

1) 即使现在与 MySQL 的连接是“utf8mb4”,将一些表设置为“utf8”是否有问题?会不会有校对冲突?

2)“utf8mb4”表是否使用更多的磁盘空间,即使上面没有存储 utf8mb4 字符?

3) 你会建议我将所有表更改为 utf8mb4 吗?

谢谢!

mysql collation
  • 1 个回答
  • 726 Views
Martin Hope
Nuno
Asked: 2014-07-06 08:31:35 +0800 CST

梭子鱼和压缩的好处

  • 12

不久前,我一直在阅读有关 MySQL 的文件格式 Antelope 和 Barracuda 的信息,我想知道我是否可以从 Barracuda 和 Compression 中受益。

我的服务器目前正在使用 Antelope,因为它是 MySQL 的默认设置。
由于我拥有的大型数据库,我曾多次遇到内存问题。我的数据库每天都在增加。

似乎压缩给一些人带来了好处,比如:
http ://www.mysqlperformanceblog.com/2008/04/23/real-life-use-case-for-barracuda-innodb-file-format/

我知道内存和磁盘空间可能会更低,但我不确定我是否理解这一点(引自文章):
“~5% CPU 负载根据顶部(从 80-100% 主要等待 I/O)
0.01按主键的平均查找时间(转换前 1-20 秒)"

我认为这两件事不会改善,因为如果数据被压缩,服务器必须解压缩才能再次获取原始数据,所以CPU 使用率会增加难道没有意义吗?

这对读/写密集型应用程序有好处吗?你会建议我改用梭子鱼和压缩吗?

你知道梭子鱼的任何问题吗?
以下问题的答案似乎指出了一些问题,但由于它是从 2011 年开始的,我想说它们现在已经修复:https ://serverfault.com/questions/258022/mysql-innodb-how-to-switch -到梭子鱼格式

mysql innodb
  • 1 个回答
  • 6676 Views
Martin Hope
Nuno
Asked: 2014-07-06 04:34:39 +0800 CST

ROW_FORMAT - 压缩 vs 紧凑 vs 动态

  • 15

在 MySQL InnoDB 中,ROW_FORMAT 的 COMPRESSED、COMPACT 和 DYNAMIC 有什么区别?

彼此之间有什么好处?

mysql innodb
  • 1 个回答
  • 11220 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve