%SYS
Bitmap Class Reference
Inheritance diagram for Bitmap:
Collaboration diagram for Bitmap:

Static Public Member Functions

_.Library.Status Namespace (_.Library.String ns, _.Library.Boolean NoJournal, _.Library.Boolean Display, _.Library.TimeStamp StopTime)
 
_.Library.Status OneClass (_.Library.String ClassName, _.Library.Boolean NoJournal, _.Library.Boolean Display, _.Library.TimeStamp StopTime, _.Library.RegisteredObject StatusObj)
 

Public Attributes

 ClassName
 Namspace that was compacted. More...
 
 CompressionAmount
   More...
 
 ElapseTime
   More...
 
 IndexName
 Last Index Compacted, if NULL then it finished all the indices. More...
 
 Message
 Message contains error info and lists of global that were skipped because they where not in the local DB. More...
 
 Namespace
   More...
 
 NewSize
   More...
 
 NumberCompressed
 count of how many indices were compacted More...
 
 OldSize
   More...
 
 StartTime
 when the last Compact was started More...
 
 Status
 current status of the compaction More...
 
 StopTime
 Passed in Timestamp for when the compact should stop, NULL for no stop time. More...
 

Static Private Member Functions

_.Library.Status __CompactGlobal (_.Library.String global, _.Library.Integer vars, _.Library.Integer current, _.Library.String v, _.Library.Boolean Display, _.Library.RegisteredObject StatusObj)
 

Detailed Description

This utility is used to compact bitmap/bitslice indices.
Over time in a volatile table (think lots of INSERTs and DELETEs) the storage for a bitmap index may become less efficient. To a lesser extent index value changes, i.e. UPDATES, can also degrade bitmap performance.

This utility can by run on a live system.
It will loop over all bitmap/bitslice indices in a class or namespace and compact them by either removing a chunk that is all zeros or by using $BITLOGIC() to compact the bits.

The Utility has 2 entry points:

d ##class(SYS.Maint.Bitmap).Namespace("Samples",1,1,"2014-01-17 09:00:00")

d ##class(SYS.Maint.Bitmap).OneClass("BitMap.Test",1,1)

Member Function Documentation

◆ __CompactGlobal()

_.Library.Status __CompactGlobal ( _.Library.String  global,
_.Library.Integer  vars,
_.Library.Integer  current,
_.Library.String  v,
_.Library.Boolean  Display,
_.Library.RegisteredObject  StatusObj 
)
staticprivate

This method compacts any global bitmap


Called from CompactMap or CompactMapSQL it takes 3 parameters


global - is the root for this index, for example ^Sample.PersonI("NameIndex") vars - is the number of subscripts we need to $ORDER() over current - is the subscript level we are presently on

Once we get tot he final subscript level we execute the compat code.

◆ Namespace()

Entry point to compact all bitmaps in a namespace.


Each run records its' status in this class
If the last run did not finish then it will pick up where it stopped
This utility will only Compact globals in the default database

Parameters:

  • ns - Namespace you want to compact
  • NoJournal - Stop journaling for this Process

  • 1 to Stop Journaling
  • 0 to continue Journaling default = 0

Display - write info to the current device

  • 1 to write to the device
  • 0 to not write to the device default = 0

StopTime - Timestamp for when the utility should stop.

  • The stop time is tested after each index is finished so it could go over.
  • A value of NULL means not limit

◆ OneClass()

_.Library.Status OneClass ( _.Library.String  ClassName,
_.Library.Boolean  NoJournal,
_.Library.Boolean  Display,
_.Library.TimeStamp  StopTime,
_.Library.RegisteredObject  StatusObj 
)
static

Entry point to compact all bitmaps in one class.


Each run records its' status in this class
This utility will only Compact globals in the default database

Parameters:

  • ClassName - Class you want to compact
  • NoJournal - Stop journaling for this Process

  • 1 to Stop Journaling
  • 0 to continue Journaling default = 0

Display - write info to the current device


1 to write to the device 0 to not write to the device default = 0 StopTime - Timestamp for when the utility should stop. The stop time is tested after each index is finished so it could go over.


a value of NULL means not limit StatusObj - This is either passed in from the Namespace Method or is defined in this method.


This value should not be passed in if you are calling this method directly

Member Data Documentation

◆ ClassName

ClassName

Namspace that was compacted.

Last Class Compacted, if NULL then it finished all the classes.  

◆ CompressionAmount

CompressionAmount

 

 

◆ ElapseTime

ElapseTime

 

 

◆ IndexName

IndexName

Last Index Compacted, if NULL then it finished all the indices.

 

◆ Message

Message

Message contains error info and lists of global that were skipped because they where not in the local DB.

 

◆ Namespace

 

 

◆ NewSize

NewSize

 

 

◆ NumberCompressed

NumberCompressed

count of how many indices were compacted

 

◆ OldSize

OldSize

 

 

◆ StartTime

StartTime

when the last Compact was started

 

◆ Status

Status

current status of the compaction

Running - Compaction is underway Stopped - Compaction reached the Duration limit before finishing all Classes or encountered an error Finished - Compaction completed.  

◆ StopTime

StopTime

Passed in Timestamp for when the compact should stop, NULL for no stop time.

Set to the time the compaction finshed when done.