我们在MySQL数据库中存储了数百万种化合物的表示形式,作为BLOB。当我们需要在这些化合物之间进行查询并在查询中比较这些哈希值时,我们还保留了这些BLOB的哈希值。
由于我们发现MySQL库提供的标准散列函数(如CRC)在我们的用例中经常发生冲突,因此我们使用了一个特定于我们数据的自定义散列函数,将其 Package 为MySQL插件,并使用此插件创建了一个用户定义函数,如下所示:
CREATE FUNCTION customhash RETURNS INTEGER SONAME 'customhash.so'
字符串
不幸的是,我们需要将MySQL安装转移到另一个托管数据中心,由于安全原因和数据中心政策,我们不允许通过添加插件来自定义MySQL。
我们最近听说了XXHash库,我们对它做了一些测试,发现它的性能很好,不会在我们的数据中产生冲突。而且,原来它已经被MySQL standard distribution内部使用了。
我想知道是否可以配置MySQL服务器在我们的MySQL例程中调用XXH64_digest函数,而不将其编译为插件。
2条答案
按热度按时间2skhul331#
我查看了MySQL源代码和内置函数,在MySQL例程中找不到运行XXHash的方法,似乎XXHash是MySQL内部使用的,用户不可见。
为了在MySQL例程中运行XXHash,我开发了一个插件,以备在MySQL服务器中使用XXHash算法时使用。
这个插件可以在这里找到:Github repository for xxhash_mysql_plugin。
安装插件后,您可以在select语句中运行xxhash函数,如下所示:
的数据
ss2ws0br2#
我为此构建了Docker镜像
的数据
详情请参阅https://hub.docker.com/r/vuongtlt13/mysql