Options to Enhance Performance

BYNOEQUALS=

Specifies the output order of table rows with identical values for the BY column.
Syntax
BYNOEQUALS=YES | NO
Arguments
YES
does not guarantee the output order of table rows with identical values in a BY clause.
NO
guarantees the output order of table rows with identical values in a BY clause will be the relative table position of the rows from the input table. This is the default.
Example
Specify for SPD Server in the ensuing BY-column operation to output rows with identical values in the key column randomly.
data sport.racquets(index=(string));
   input
     raqname $20.
     @22 weight
     @28 balance $2.
     @32 flex
     @36 gripsize
     @42 string $3.
     @47 price
     @55 instock;
   datalines;
Solo Junior          10.1   N   2  3.75  syn   50.00  6
Solo Lobber          11.3   N  10  5.5   syn  160.00  1
Solo Queensize       10.9  HH   6  5.0   syn  130.00  3
Solo Kingsize        13.1  HH   5  5.6   syn  140.00  3
;

data sport.racqbal(bynoequal=yes);
  set sport.racquets;
  by balance;
run;  

IOBLOCKSIZE=

Specifies the number of rows in a block to be stored in or read from an SPD Server table.
Syntax
IOBLOCKSIZE=n
Default: 4096
Use in Conjunction with Macro Variable SPDSDCMP= or Table Options COMPRESS= or ENCRYPT= .
Arguments
n
is the size of the block.
Description
The software reads and stores a server table in blocks. IOBLOCKSIZE= is useful on compressed or encrypted tables. SPD Server software does not use IOBLOCKSIZE= on noncompressed or nonencrypted tables.
For tables that you compress or encrypt, using either the option COMPRESS= or the macro variable SPDSDCMP=, the IOBLOCKSIZE= specification determines the number of rows to include in the block. The specification applies to block compression as well as data I/O to and from disk. The IOBLOCKSIZE= value affects the table's organization on disk.
When using SPD Server table compression or encryption, specify an IOBLOCKSIZE= value that complements how the data is to be accessed, sequentially or randomly. Sequential access or operations requiring full table scans favor a large block size, for example 64K. In contrast, random access favors a smaller block size, for example 8K.
Example
A huge company mailing list is processed sequentially. Specify a block size for compression that is optimal for sequential access.
/* IOblocksize set to 64K */
data sport.maillist(ioblocksize=65536 compress=yes);
   input name $ 1-20
     address $ 21-57
     phoneno $ 58-69
     sex $71;

  datalines;

Douglas, Mike       3256 Main St., Cary, NC 27511        919-444-5555 M
Walters, Ann Marie  256 Evans Dr., Durham, NC 27707      919-324-6786 F
Turner, Julia       709 Cedar Rd., Cary, NC 27513        919-555-9045 F
Cashwell, Jack      567 Scott Ln., Chapel Hill, NC 27514 919-533-3845 M
Clark, John         9 Church St.,  Durham, NC 27705      919-324-0390 M
;
run;  

NETPACKSIZE=

Specifies the size of the SPD Server network data packet.
Syntax
NETPACKSIZE=size-of-packet
Arguments
size-of-packet
is the size of the network packet in bytes.
Description
This option controls the size of the buffer used for data transfer between SPD Server and a SAS client. The default is 32K bytes. The buffer size is relative to the size of a table row. It cannot be less than the size of a single row. Packet size must be equal to some multiple of the table rows. If it is not, SPD Server rounds up the size specified. For example, if the packet buffer size is 4096 bytes and the row size is 3072, the software rounds up the buffer size to 6144.
Select a packet size to complement the bandwidth of the network it must travel through. An optimum size will flow the data continuously without significant pauses between packets.
Example
Create a 12K buffer in the memory of the server to send three rows from MYTABLE in each network packet. (The row size in MYTABLE is 4K.)
data mylib.mytable (netpacksize=12288);  

SEGSIZE=

Specifies the size of the segment for an index file associated with an SPD Server table.
Syntax
SEGSIZE=number
Arguments
number
is the number of table rows to include in the index segment.
Description
The minimum SEGSIZE= value is 1024 table rows. The default value is 8192 table rows. The size of the index segment corresponds to the structure of the table and cannot be changed after the table is created.
Example
Specify a segment size of 64K for MYLIB.MYTABLE.
data mylib.mytable (segsize=65536);  
Note: Tests show that increasing the size of the segment does not significantly increase performance.