1. What are loads and unloads in SAP HANA
environments?
When a column is loaded, it is copied from persistence into SAP
HANA column store memory.
Unloads are table column displacements from column store memory.
In this SAP Note we focus on loads and unloads of columns in
column store. Tables in row store are typically loaded during startup and
remain in memory permanently.
2. Which indications exist for SAP HANA load and
unload issues?
While loads usually don't indicate issues, unloads are critical
for the following reasons: They are often indicators of memory bottlenecks and
they introduce overhead because unloaded column may have to be reloaded after
some time.
The following SAP HANA alerts indicate problems in the unload
area:
Alert
|
Name
|
SAP
Note
|
Description
|
55
|
Columnstore unloads
|
Determines how many columns in
columnstore tables have been unloaded from memory. This can indicate
performance issues.
|
SQL: "HANA_Configuration_MiniChecks" (SAP Notes 1969700, 1999993) returns a potentially critical issue (C
= 'X') for one of the following individual checks:
Check
ID
|
Details
|
430
|
Number of column store unloads
(last day)
|
431
|
Time since last column store
unload (days)
|
3. When do loads happen?
Columns are loaded into memory in the following situations:
Reason
|
Details
|
||||||||||||||||
Explicit access
|
When a table column is accessed
and it doesn't reside in memory, yet, it is loaded into memory.
Exceptions:
Time spent for loading table
columns during SQL statement preparation can be identified via column
TOTAL_TABLE_LOAD_TIME_DURING_PREPARATION in monitoring view M_SQL_PLAN_CACHE.
Time spent for loading table columns during SQL statement execution is not
inidividually displayed.
|
||||||||||||||||
Explicit load
|
You can use the following options
to load tables into memory explicitly:
If you want to load all tables
into memory (e.g. as recommended in SAP Note 2066313), you can use the following Python
script available as part of the SAP HANA installation:
/usr/sap/<sid>/HDB<inst_id>/exe/python_support/loadAllTables.py
This tool should only be used in
exceptional situations, because loading all tables into memory can result in
memory and CPU bottlenecks.
|
||||||||||||||||
Reload after startup
(explicitly configured tables)
|
The following commands can be used
to define tables that should be loaded directly after startup:
You can check for tables and / or
columns with an activated reload flag in the following ways:
Loading columns flagged with
PRELOAD has precedence over columns marked for pre-warming (see below).
|
||||||||||||||||
Reload after startup
(pre-warming based on columns previously loaded)
Automatic load of columns on
secondary system of system replication environment
Automatic load of columns on
standby node during auto host failover
|
The following SAP HANA parameters
control column loads during SAP HANA startup and on the secondary system
of a system replication scenario based on columns loaded into memory before
the shutdown:
You can check for tables currently
part of this reload information using the following hdbcons command (SAP Note
2222218):
tablepreload c -f
|
4. How can reload information for startup, host
auto failover and system replication be collected?
The following parameter is used to control the collection of
reload information:
Parameter
|
Default
|
Unit
|
Details
|
global.ini -> [persistence] ->
tablepreload_write_interval
|
3600 (Rev. 69 and below)
86400 (Rev. 70 and above) |
s
|
This parameter defines the
frequency of collecting table load information for reloads during startup and
on the secondary system replication side.
Collection of the data is disabled
by setting the value to 0.
|
In exceptional cases you can manually execute the following
hdbcons command (SAP Note 2222218) in order to collect the current load
state:
tablepreload
w
See SAP Note 1889081 for more information.
5. When do unloads happen?
The following table lists the main reasons for unloads. You can
determine the reason of an unload via column REASON of monitoring view
M_CS_UNLOADS.
Reason
|
Details
|
||||||||||||
LOW MEMORY
|
SAP HANA automatically performs
unloads when memory becomes scarce. This is typically critical for
performance and should be avoided whenever possible.
The following SAP HANA parameter
globally controls when unloads are performed in case of a high memory utilization:
|
||||||||||||
EXPLICIT
|
Tables can be unloaded explicitly
using the following SQL command:
UNLOAD "<table_name>"
Alternatively you can use SAP HANA
Studio for that purpose:
SAP HANA Studio ->
<system> -> Catalog -> <schema> -> <table> ->
"Unload from memory..."
|
||||||||||||
UNUSED RESOURCE
|
Automatic unloads when a column
exceeds the configured unused retention period:
Configuring a retention for
unloads typically provides no advantage and increases the risk of unnecessary
unloads and loads. Therefore these parameters should only be set in
exceptional situations.
|
||||||||||||
MERGE
|
If a column is loaded and unloaded
purely for merge reasons, you will find the unload reason MERGE as of SAP
HANA SPS 12. See SAP Note 2057046 for more information related to
SAP HANA delta merges.
|
6. In which sequence are columns unloaded?
Usually unloads happen based on a "least recently used"
(LRU) approach, so the columns having not being used for the longest time are
unloaded first.
If there are tables that should in general be replaced earlier or
later, you can prioritize unloads using the UNLOAD PRIORITY setting:
ALTER
TABLE "<table_name>" UNLOAD PRIORITY <priority>
The priority can vary between 0 and 9. Tables with a higher
priority are unloaded earlier than tables with a lower priority. SAP HANA
considers both the last access time and the unload priority for the proper
sequence of unloads, so both factors are important.
The unload priority of a table can be checked via:
SELECT
UNLOAD_PRIORITY FROM TABLES WHERE TABLE_NAME = '<table_name>'
7. What are typical unload priorities for tables
in SAP environments?
The following table unload priorities are typically used in SAP
environments:
Unload
priority
|
Table
type
|
Details
|
0
|
Temporary tables
System tables |
All temporary tables
(TABLES.IS_TEMPORARY = 'TRUE', created with NO LOGGING) must not be unloaded
and therefore always have unload priority 0. If you want to define a
higher unload priority, you receive the following error:
SQL error 257: sql syntax error: invalid unload priority
for temporary table, only 0 is allowed
|
5
|
Default
|
Per default tables are delivered
with a medium unload priority of 5.
|
7
|
BW tables (DSO, PSA)
|
Some BW DSO (/BIC/A*) and PSA
(/BIC/B*) can typically be unloaded earlier than other tables and are
therefore configured with unload priority 7. Be aware that it depends
significantly on the type of DSO and PSA, so it is normal that there are also
DSO and PSA tables with unload priority 5.
|
You can use SQL:
"HANA_Tables_ColumnStore_UnloadPriorities" (SAP Note 1969700) in order to evaluate existing unload
priorities and check for tables with unload priorities different from the
standard.
8. How can unloads be monitored?
You can monitor unloads in the following way:
- Monitoring
view M_CS_UNLOADS
- SAP
HANA Studio -> Administration -> Performance -> Load -> Column
Unloads
- SQL:
"HANA_Tables_ColumnStore_Unloads" (SAP Note 1969700)
- SQL:
"HANA_LoadHistory_Services" (SAP
Note 1969700, SPS 09 and
higher)
9. Where is unload information recorded?
Unload information is recorded in unload trace files on disk
level. M_CS_UNLOADS is based on these trace files. Typically up to 10 * 10 MB
trace files can be written per host and service. As a consequence unload
information is still available, even if SAP HANA is restarted.
See SAP Note 2119087 ("Unload trace") for
more information.
10. How granular can loads and unloads be
performed?
The fines granularities of loads and unloads are:
Mechanism
|
Loads
|
Unloads
|
Manual
|
per column
|
per table
|
Automatic
|
per column and partition
Paged attribute (SAP Note 1871386): per page
|
per column and partition
Paged attribute (SAP Note 1871386): per page
|
11. How can I check for errors during column
loads?
The monitoring view M_CS_LOADS doesn't contain an error
information. Whenever a column load is triggered, it is recorded in M_CS_LOADS,
independent if it was successful or if it failed (e.g. due to a lack of memory
or an inconsistency).
If you want to monitor failed column loads, you can check the
trace files for entries starting with "load failed:", e.g.:
[224524]{340032}[291/-1]
2016-02-03 18:37:39.190596 e attributes AttributeValueContainer.cpp(03563) :
load failed: exception 1: no.70000000 (AttributeEngine/AttributeStoreFile.h:339)
ste::Exception type AttributeStoreFile error 'ISAPSR3T000AAattribute_203.bin': AttributeEngine: error reading file message additionalInfo $ADDINFO$
exception throw location:
1: 0x00007f43076400c7 in ste::Exception::Exception(char const*, char const*, char const*, int, char const*)+0x53 at Exception.cpp:12 (libhdbbasement.so)
2: 0x00007f42fc5c8e94 in AttributeEngine::AttributeStoreReadFile::throwError(int, char const*, long, bool)+0x130 at AttributeStoreFile.h:142 (libhdbcs.so)
ste::Exception type AttributeStoreFile error 'ISAPSR3T000AAattribute_203.bin': AttributeEngine: error reading file message additionalInfo $ADDINFO$
exception throw location:
1: 0x00007f43076400c7 in ste::Exception::Exception(char const*, char const*, char const*, int, char const*)+0x53 at Exception.cpp:12 (libhdbbasement.so)
2: 0x00007f42fc5c8e94 in AttributeEngine::AttributeStoreReadFile::throwError(int, char const*, long, bool)+0x130 at AttributeStoreFile.h:142 (libhdbcs.so)
You can use SQL: "HANA_TraceFiles_Content" (TRACE_TEXT
= 'load failed:%') available via SAP Note 1969700 for that purpose.
curry 9
ReplyDeletesupreme clothing
hermes handbags
off white clothing
supreme hoodie
off white
bape shoes
hermes bag
off white jordan
golden goose