假设我在一个文件夹中有一个.json文件的集合,每个文件恰好代表一本书,即
每个文件的大小仅在6kb和3mb之间,但有数百万个!
现在,我对MariaDb执行以下操作:
CREATE OR REPLACE TABLE books (
isbn CHAR(13) NOT NULL,
title VARCHAR(256) NULL
) ENGINE=CONNECT TABLE_TYPE=JSON OPTION_LIST="PRETTY=2,JMODE=1,MAPPING=1" MULTIPLE=1 FILE_NAME="folder/*.json" READONLY=1;
然后是一个简单查询,例如
SELECT COUNT(*) FROM books;
如果文件夹中只有几个文件,此方法就可以正常工作。。但是,即使只有数千个文件,它也不再起作用:客户端因{{ 1}},而且服务器日志对我来说真的没有帮助。
我猜这是一个内存问题,但是我不明白为什么会发生:似乎没有必要将每个文件/书本对象加载到内存中;服务器可以将每个文件一个接一个地访问,对吧?
我尝试过的事没有成功
Lost connection to MySQL server during query
而非PRETTY=0
PRETTY=2
HUGE=1
(左右)set global connect_work_size=999999999
而非MAPPING=0
MAPPING=1
在my.ini中非常感谢您的帮助。
修改:
这些文件只是普通的对象JSON文件,例如
max_allowed_packet=1024M
(以及其他一些属性)。