0

假设我在一个文件夹中有一组 .json 文件,每个文件都代表一本书,即

  • 文件夹/1.json 中的书 1
  • 文件夹/2.json 中的书 2
  • …</li>

这些文件每个大小只有 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;

如果文件夹中只有几个文件,这可以正常工作。但是,即使只有几千个,它也不再起作用:客户端崩溃Lost connection to MySQL server during query并且服务器日志(对我来说)并没有真正的帮助。

我想这是一个内存问题,但我不明白为什么会发生:似乎没有必要将每个文件/书对象加载到内存中;服务器可以一个接一个地处理每个文件,对吗?

我尝试但没有成功的事情

  • PRETTY=0代替PRETTY=2
  • HUGE=1
  • set global connect_work_size=999999999(或者)
  • MAPPING=0代替MAPPING=1
  • max_allowed_packet=1024M在我的.ini

任何帮助深表感谢。

编辑:这些文件只是普通的对象 JSON 文件,例如 {"timestamp":1564002510168,"isbn":"9781081958077","author":"Mark Twain", "title": "The Adventures of Tom Sawyer: Annotated"}(和一些进一步的属性)。

4

0 回答 0