【问题标题】:Percona murmur_hash, fnv_64 and fnv1a_64 functionsPercona murmur_hash、fnv_64 和 fnv1a_64 函数
【发布时间】:2017-05-15 03:04:46
【问题描述】:

有人可以帮助我了解 Percona 在安装后立即建议的这三个功能的用途和好处吗?

* Percona XtraDB Cluster is distributed with several useful UDF (User Defined Function) from Percona Toolkit.
 * Run the following commands to create these functions:

        mysql -e "CREATE FUNCTION fnv1a_64 RETURNS INTEGER SONAME 'libfnv1a_udf.so'"
        mysql -e "CREATE FUNCTION fnv_64 RETURNS INTEGER SONAME 'libfnv_udf.so'"
        mysql -e "CREATE FUNCTION murmur_hash RETURNS INTEGER SONAME 'libmurmur_udf.so'"

 * See http://www.percona.com/doc/percona-server/5.7/management/udf_percona_toolkit.html for more details

我从来没有找到清楚解释这些功能以及您从中获得什么好处/优势的文档。

【问题讨论】:

    标签: mysql percona xtradb


    【解决方案1】:

    这些功能的好处是“更快的校验和”......即几个哈希函数的更有效的实现。

    但这只有在您需要(要求)生成这些哈希函数提供的值时才有好处。

    如果您不需要生成哈希值,那么这些函数不会提供任何好处。

    参考资料:

    http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function

    http://en.wikipedia.org/wiki/MurmurHash

    http://en.wikipedia.org/wiki/Hash_function

    【讨论】:

    • 说我需要生成散列函数,这还能给我带来什么好处?快速插入、选择等?
    • MySQL 提供了一些内置的哈希函数:MD5、SHA1、SHA2。这些哈希函数的算法更复杂,需要更多的运算来计算,这使得它们变得很慢。而“更慢”是我们想要的密码散列功能,因为这使得使用“蛮力”破解密码的成本更高(尽管由于已知的漏洞,MD5 和 SHA1 不再被认为是安全的。)如果我们抛开安全/密码学,我们需要一个散列值来做其他事情,那么“慢”散列可能没有好处。所以我们可以使用更快、更便宜的哈希函数。
    • 任何调用散列函数的 SQL 语句(INSERT、SELECT)都会产生执行该函数的成本(时间)。如果我们消耗大量周期来计算哈希,那将对性能和可扩展性产生影响。我们可能不会注意到计算单个哈希值的差异。但是当我们进行大量的哈希计算时,我们就会真正注意到差异。
    • 感谢@spencer7593 对此进行详细说明。我会接受这个解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多