Function Offloading

This chapter describes Function Offloading, a key feature of ZetaData.

Overview

In Tibero Active Cluster (TAC) configurations that do not use storage nodes, the bandwidth limitations of the SAN switches become a bottleneck when performing large amounts of I/O. To solve this problem, ZetaData uses high-bandwidth InfiniBand instead of SAN switches. However, it doesn't change the fact that it needs to transfer large amounts of data over the network.

ZetaData's Function Offloading function serves to significantly reduce the amount of data transmitted over the network by offloading tasks such as raw filtering and column filtering and projection that were previously performed on TAC instances to SSVR instances.

In addition, tasks that use a lot of CPU resources, such as decompression, can also be transferred to SSVR instances to utilize the CPU resources of storage nodes, which are significantly less utilized than the CPU resources of DB nodes.


Operation

Function Offloading basically operates only when querying data through Table Full Scan.

Since this function is developed to reduce data transmission in a network, it does not operate when there is not a lot of I/O such as table queries with indexes.

To efficiently use Function Offloading, do not create indexes when storing massive data in a ZetaData configuration. If you unavoidably include indexed columns in the WHERE clause to view data, you can give the query a Full Scan hint (/+full_storage(t1)/) to avoid viewing through the index. Conversely, if you do not want to use Function Offloading, you can force it with a hint (/+no_full_storage(t1)/). Another limitation is that this feature is not available for LOB columns that are stored in separate LOB segments.

Note

For more information about query hints, refer to "Tibero SQL reference guide".

Function offloading is most effective when a lot of data can be filtered out at the WHERE clause processing stage. This is because the amount of data that needs to be sent to the TAC instance can be greatly reduced by the work of the SSVR instance.

Also, because the prefetch management is done within the SSVR instance, the I/O is more efficient compared to block requests that do not use functions. However, the SSVR instance is not responsible for the number of buffer cache overflows on the TAC instance. That is, using this function is not efficient for OLTP jobs.

The SSVR instance cannot handle tables with frequent modifications because it doesn't know about the static operations. This means that the effectiveness of this feature is minimal for OLTP operations.

Data for tables viewed through the Function Offloading feature may not be kept in the buffer cache of the TAC instance. This is because it is delivered to the TAC instance in a pre-processed form from the SSVR instance and is not delivered in blocks of data. For the same reason, the effectiveness of the feature is most noticeable when working with tables that are too large to fit all the data in the buffer cache. Conversely, you should not use the feature if the data you want to view is small enough to fit in the buffer cache, or if you expect frequent views and modifications to that data so that it is already in the buffer cache.

If ZetaData is configured with TCP, not InfiniBand, SGA must be sufficient because Function Offloading results are transferred through TCP and temporarily stored in the SGA. Because the TAC instance requests as many I/Os as the number of Grid Disks in the SSVR instance at a time, it uses much more SGA space than when the function is not used.

To configure TAC instances for SGA, refer to the Tibero's configuration.


Initialization Parameters

The following describes each initialization parameter for the Function Offloading function.

다음은 Function Offloading 기능과 관련한 초기화 파라미터에 대한 설명입니다.

Parameger
Description

STORAGE_PROCESSING

This is a session parameter of the DB instance that specifies whether to read data using the Function Offloading function.

Set to "Y" or "N" before executing the query to specify whether to run the feature for each query. (Default: Y only if USE_ZETA=Y)


Functions

The following is a list of functions that support Function Offloading.

ABS, ADD_MONTHS, ASCII, ASCIISTR, BETWEEN, BITAND, CASE, CEIL, CHR, COALESCE, DECODE, DUMP, EXP, EXTRACT, FLOOR, FROM_TZ
HEXTORAW, INITCAP, INSTR, INSTRB, ISSEQUENCEWORDS,
LAST_DAY, LENGTH, LENGTHB, LENGTHC, LIKE, LNNVL, LOG, LOWER, LPAD, LTRIM, MOD, MONTHS_BETWEEN, NEW_TIME, NEXT_DAY, NULLIF, NUMTODSINTERVAL, NUMTOYMINTERVAL, NVL, NVL2, OVERLAPS, RAWTOHEX, REVERSE, ROUND, ROWIDTOCHAR,
RPAD, RTRIM, SIGN, SQRT, SUBSTR, SUBSTRB, SYS_EXTRACT_UTC,
TO_CHAR(Lob type is not available), TO_DATE, TO_DSINTERVAL, TO_MULTI_BYTE, TO_NCHAR, TO_NUMBER, TO_SINGLE_BYTE, TO_TIME, TO_TIMESTAMP, TO_TIMESTAMP_TZ, TO_YMINTERVAL, TRANSLATE, TRIM, TRUNC, UPPER, VSIZE

Constraint: lob cannot be an input to the TO_CHAR function.

Last updated