selvaganesang opened a new pull request #1824: [TRAFODION-3280] Reduce path 
length in Trafodion for improved performance and scalability 
URL: https://github.com/apache/trafodion/pull/1824
 
 
   Removed/avoided the following APIs shown as hotspots when Trafodion is run 
with OLTP kind of queries.
   
   java.net.Socket.setSoTimeout
   org.trafodion.jdbc.t4.T4LoggingUtilities.log
   java.net.Socket.getLocalSocketAddress
   java.lang.String.split
   java.lang.String.replaceAll
   java.lang.Class.getMethod
   org.trafodion.jdbc.t4.TrafT4ResultSet.findColumn
   
   Now socket.read waits for the network timeout. It can be configured via a 
property networkTimeout or call to connection.setNetworkTimeout. If the 
networkTimeout is not configured, a default value of 10 secs is assumed.
   
   The caller is expected to set the timeout depending upon the operation being 
performed like loginTimeout, queryTimeout. Socket.read will wake up for every 
networkTimeout expiration and check if the timeout for the operation hasn't 
exceeded. When it exceeds, SocketTimeoutException is thrown.
   
   Changed the T4Statement and T4Restult classes to have "has a" relationship 
with T4Connection for better understanding of the code. Earlier, it had "is a" 
relationship with T4Connection.
   
   JDBC driver was parsing the sql string passed to it by the application to 
determine the type of SQL statement and to check if the sql string has 
parameters. It doesn't parse the sql string anymore
   and passes the sql string to SQL engine via mxosrvr. In case of 
PreparedStatement, the JDBC driver will
   set the sqlStmtType based on the query type returned. In case of Statement, 
the JDBC driver will set the
   sqlStmtType as SQL_TYPE_UNKNOWN.
   
   Now, the PreparedStatement is always prepared for setting array values for 
parameter for all
   statement types such as IUD and select. SQL engine will report an error if 
the array values are
   not supported for any statement type.
   
   Changed Hashtable to HashMap where possible with the assumption that the 
JDBC connection
   shouldn't be used from different threads. TrafT4Connection object needs be 
made thread-safe.
   
   Optimized org.trafodion.jdbc.t4.TrafT4ResultSet.findColumn by using HashMap 
of columnName to
   columnIndex. This should avoid excessive calls to 
java.lang.String.equalsIgnoreCase.
   
   Removed excessive calls to java.lang.Class.getMethod from TrafT4ResultSet.
   
   When the statement type is TYPE_UNKNOWN, mxosrvr was executing the extra code
   to load controls, GetHashInfo etc. GetHashInfo was corrupting the sqlString 
by
   truncating spaces in between the literals. Removed these code from mxosrvr 
because it is specific to QueryStatsServer as part of NeoView and WMS.
   
   There are many places in our code getenv is called repeatedly. Cleaned up 
code so that
   repeated getenv calls are avoided during prepare and execute operations.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to