posted 11 months ago in CUBRID Life category by Esen Sagynov
On behalf of CUBRID Team I am happy to announce the new 8.4.4 version of CUBRID open source relational database. This release is mostly dedicated for stability improvement of the 8.4 branch, and has some minor behavioral changes which I will explain below. Thus, CUBRID 8.4.4 is fully compatible with the previous 8.4.3 version.
If you have been following up with our latest releases, you may have noticed that we are maintaining two branches for CUBRID 8.4.x and 9.x. As 8.4.0 release introduced major changes and extended support for MySQL compatible SQL, many users have started using or migrated to it. In fact, there are more 8.4.x users than 9.x at this moment. For this reason, we bring common bug fixes applied to the successor 9.x branch down to 8.4.x branch. This way we make sure users of the 8.4.x branch have the latest improvements.
Since this is a stability improvement release, there are no other new features except the SQL profiling which is brought down from the upcoming 9.2 release.
Prior to 8.4.4 users could obtain SQL profiling information to analyze the query performance only in desktop GUI applications like CUBRID Manager or CUBRID Query Browser. Now CUBRID allows to retrieve SQL profiling information directly from drivers. To enable the SQL profiling one can execute
SET TRACE ON before executing the query, then retrieve the query plan and statistics by executing
SHOW TRACE query. See the following example:
csql> SET TRACE ON; csql> SELECT /*+ RECOMPILE */ o.host_year, o.host_nation, o.host_city, n.name, SUM(p.gold), SUM(p.silver), SUM(p.bronze) FROM OLYMPIC o, PARTICIPANT p, NATION n WHERE o.host_year = p.host_year AND p.nation_code = n.code AND p.gold > 10 GROUP BY o.host_nation; csql> SHOW TRACE; trace ====================== ' Query Plan: SORT (group by) NESTED LOOPS (inner join) NESTED LOOPS (inner join) TABLE SCAN (o) INDEX SCAN (p.fk_participant_host_year) (key range: (o.host_year=p.host_year)) INDEX SCAN (n.pk_nation_code) (key range: p.nation_code=n.code) rewritten query: select o.host_year, o.host_nation, o.host_city, n.[name], sum(p.gold), sum(p.silver), sum(p.bronze) from OLYMPIC o, PARTICIPANT p, NATION n where (o.host_year=p.host_year and p.nation_code=n.code and (p.gold> ?:0 )) group by o.host_nation Trace Statistics: SELECT (time: 1, fetch: 1059, ioread: 2) SCAN (table: olympic), (heap time: 0, fetch: 26, ioread: 0, readrows: 25, rows: 25) SCAN (index: participant.fk_participant_host_year), (btree time: 1, fetch: 945, ioread: 2, readkeys: 5, filteredkeys: 5, rows: 916) (lookup time: 0, rows: 38) SCAN (index: nation.pk_nation_code), (btree time: 0, fetch: 76, ioread: 0, readkeys: 38, filteredkeys: 38, rows: 38) (lookup time: 0, rows: 38) GROUPBY (time: 0, sort: true, page: 0, ioread: 0, rows: 5)
In CUBRID 8.4.4 there are tons of stability and usability improvements which include the following list of improvements of administrative functions.
- Administrative Convenience
- One of the major improvement is the SQL profiling which I've already explained above.
- Added a command line utility to output the parameter information of running brokers or shards.
- Added tranlist utility to display a list of active transaction throughout all CAS processes.
- Sort the output of the tranlist command by the specified column.
- Now killtran utility can also remove transactions by SQL ID.
- To remove multiple transactions at once -i option of killtran utility can be used.
- Added an additional event log file to record query status information such as SLOW_QUERY, MANY_IOREADS, LOCK_TIMEOUT, DEADLONG, and TEMP_VOLUME_EXPAND which affect the query performance.
- cubrid_master log file now includes each node information in the output of HA status.
- An option to change the failover method in HA environment.
- Shard-related processes are started or terminated by using the "cubrid service" command.
- Added a parameter to adjust the maximum number of replication archive logs.
- Added a system parameter to specify transaction rollback when lock escalation occurs.
Some of the functionality in CUBRID 8.4.4 has been changed.
- When a column without a default value is added by using the ALTER ... ADD COLUMN statement, the PRIMARY KEY or NOT NULL constraint was violated as all values of the added columns became NULL. This problem has been fixed.
- Failure to repeat INSERT in the array/batch executive function after executing PREPARE without committing a newly-created table
- In JDBC code changed the zero date of TIMESTAMP from '0001-01-01 00:00:00' to '1970-01-01 00:00:00'(GST) when the value of zeroDateTimeBehavior in the connection URL is "round".
- In JDBC and CCI drivers query timeout is now applied to the batch processing function not per query when execution multiple queries at once.
- Changed the time and capacity related parameter names to allow to set time unit or capacity unit next to the time or capacity parameter value.
- Changed the upper limit of the sort_buffer_size system parameter to 2G.
- Removed OFF option from KEEP_CONNECTION broker parameter.
- Changed APPL_SERVER_MAX_SIZE_HARD_LIMIT broker parameter.
- Changed the default value of SQL_LOG_MAX_SIZE broker parameter from 100MB to 10MB.
Besides these improvements and behavioral changes, there are many bug fixes and minor improvements. For the full list refer to CUBRID 8.4.4 Release Notes.
In a week or so we will release a new version of 9.x branch which will carry the 9.2 label. We will explain about the new features of 9.2 in a separate post.
If you have any questions, feel free to leave your comment below.