如果缓冲区管理器已达到允许的最大内存量并且必须从内存中逐出块,则“临时存储管理器”负责存储脏块。
“Espace insuffisant sur le disque”是一条操作系统错误消息,我猜它会说“磁盘已满”。这意味着 TSM 用于存储的磁盘已满。
可能是因为您的查询生成的结果集非常庞大,以至于超出了您的可用内存和磁盘空间。
如果您查看查询,这并不奇怪:
FROM
C_Client c,
C_Mouvement m,
C_Depot d,
C_Article a,
C_Ticket t
WHERE
c.Ident = m.RefClient AND
m.Article = a.Code AND
t.DateFacture BETWEEN :dateDebut AND :dateFin
您正在连接 5 个表,但您只在其中 3 个(c、m 和 a)之间定义连接条件,这将与其他 2 个表产生完全无限制的交叉连接。如果我们只假设每个(c、m 和 a)、d 和 t 有 1000 条记录,那已经是 1,000,000,000 条记录的结果集。
这就是为什么您使用的连接语法已经被 SQL 标准弃用了二十多年的原因之一。如果您尝试使用当前语法编写查询,问题很快就会变得明显:
FROM
C_Client AS c
INNER JOIN
C_Mouvement AS m ON c.Ident = m.RefClient
INNER JOIN
C_Article AS a ON m.Article = a.Code
INNER JOIN
C_Depot AS d ON --???
INNER JOIN
C_Ticket AS t ON --???
WHERE
t.DateFacture BETWEEN :dateDebut AND :dateFin