GitHub user DaveBirdsall opened a pull request:

    https://github.com/apache/trafodion/pull/1429

    [TRAFODION-2927] Refactor and improve UPDATE STATISTICS logging

    This set of changes achieves two things:
    
    1. It provides a mechanism for UPDATE STATISTICS to capture log information 
for each command, and retain that log in the event of a severe error. 
(Otherwise the log is deleted.)
    
    2. It refactors the UPDATE STATISTICS logging facility to use the 
QRLogger/CommonLogger/log4cxx mechanism used by the rest of the SQL engine.
    
    Externals:
    
    The UPDATE STATISTICS LOG statement has been extended as follows:
    
    UPDATE STATISTICS LOG ON -- Starts continuous logging of all UPDATE 
STATISTICS and SHOWSTATS activity into one log file. Logging continues until 
the session has ended or a different UPDATE STATISTICS LOG command is entered. 
This is the same behavior as today, except the log file will be written to the 
$TRAF_HOME/logs directory like other SQL log files.
    
    UPDATE STATISTICS LOG OFF -- Stops logging. Nothing further is logged until 
a different UPDATE STATISTICS LOG command is entered. This is the same behavior 
as today.
    
    UPDATE STATISTICS LOG SYSTEM -- The "SYSTEM" option is new. When specified, 
each UPDATE STATISTICS statement (but not SHOWSTATS) is logged to a separate 
log file. If a severe error occurs (e.g. an internal error), the log file is 
retained. Otherwise it is deleted at the end of the UPDATE STATISTICS command.
    
    A CQD has been added. CQD USTAT_AUTOMATIC_LOGGING, having values of 'ON' 
and 'OFF'. If 'ON', then UPDATE STATISTICS LOG SYSTEM semantics are turned on 
by default. If 'OFF', then UPDATE STATISTICS LOG OFF semantics are turned on by 
default. (Note that no equivalent of UPDATE STATISTICS LOG ON is provided as 
that is remarkably noisy; if one really wants to log continuously, then one 
must use UPDATE STATISTICS LOG ON directly.) 
    
    The default for this CQD is 'OFF'. So by default no automatic logging is 
done. On large systems (e.g. scalability testing, or production systems with 
large tables), it is recommended to set this CQD to 'ON' in the system defaults 
table. In this way, logs will be captured for long-running UPDATE STATISTICS 
operations that fail with severe errors.
    
    In terms of design: The existing QRLogger/CommonLogger routines assume a 
model of one log file per category, which doesn't meet the needs for UPDATE 
STATISTICS. So, QRLogger has been extended to add methods to explicitly 
configure log files on a per process, even per command basis. For such files, 
we don't bother logging the process ID and node number in the individual log 
messages, as all of the messages are coming from one process. Instead, UPDATE 
STATISTICS puts the node number, PID and Linux timestamp of file creation into 
the log file name itself.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/DaveBirdsall/trafodion Trafodion2927

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/trafodion/pull/1429.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1429
    
----
commit f473c0cd5a1d895dd8a40d2ce2ec24c12a5b076d
Author: Dave Birdsall <dbirdsall@...>
Date:   2018-02-01T00:37:49Z

    [TRAFODION-2927] Refactor and improve UPDATE STATISTICS logging

----


---

Reply via email to