@skew said in Mux Logger Objects:
@ashen-shugar I've literally never heard this before... Just to be clear, my repose code works by creating a new attribute (something like d.time.poser-dbref
with the pose as the data) with each new pose, then wipe()
s those attributes after X minutes. You're saying that, even though I wipe()
, the hash key for each attribute will continue to grow? And @dbclean
will simply fix that up no problem?
And for the record, Thenomain's poselogger logs in SQL, so no issue there. The other poselogger has each player create an object, which could potentially be a problem.
The hash will continue to grow for any new attribute name. If the attribute is always d.time.poser-#3 it'll not have to hash a new attribute, but yes, any new attribute hashed, if 'time' is the actual secs() would absolutely enter a new hash.
Do a @list hash on your MUX/TM3/Rhost game and pay close attention to the line:
Vattr stats: 25793 alloc, 37 free, 18392422 name lookups
The allocs are how many actual attribute hashes you have defined. That's unique user-defined attributes in your database. The larger that is, the more memory it will take up.
Each hashed attribute takes up a small number like 256 bytes. Almost laughable, until you get a million of them
@dbclean goes through and wacks any attribute that is not currently being seen as 'in use'.
In use is defined by any attribute currently set on something.
Make sure to @reboot after your @dbclean to free up the unused memory (since it's the only way to release the memory back to the OS)