Activity Not Available
2
I Use This!

News

Analyzed 2 months ago. based on code collected 2 months ago.
Posted over 2 years ago by CUBRID
Today I am excited to announce an updated 9.x branch - CUBRID 9.3.0 has been released. CUBRID 9.3 is the version which stabilized and improved CUBRID 9.2. CUBRID 9.3's DB volume is compatible with 9.2's. CUBRID 9.1 and previous version should ... [More] migrate database. There are a number of new features and performance improvements in 9.3.0 that I will describe below. You can download the latest version of CUBRID 9.3.0 for Windows and Linux from http://www.cubrid.org/?mid=downloads&item=cubrid&os=any&cubrid=9.3.0 New Features The new features of CUBRID 9.3.0 are involved with several database aspects : SQL, HA, Administrative Convenience, Utility and Driver. SQL New Features Support SELECT FOR UPDATE Statement The FOR UPDATE clause can be used in SELECT statements for locking rows returned by the statement for a later UPDATE/DELETE. SELECT * FROM t1 INNER JOIN t2 ON t1.i=t2.i ORDER BY 1 FOR UPDATE OF t1, t2; Support Schema Lock The following two locks for schema are added. SCH-S: Schema stability lock. This lock is obtained while query compile is being executed and guarantees that the schema included in the query is not modified by other transactions. SCH-M: Schema modification lock. This lock is obtained while DDL (ALTER/CREATE/DROP) is being executed and prevents the modified schema from being accessed by other transactions. As the schema lock is applied, the deadlock problem which has occurred when multiple DELETEs on the table without indexes were executed is solved. Support various SHOW syntaxes for checking the internal database information Add the SHOW ACCESS STATUS statement The SHOW ACCESS STATUS statement is added to display the login information of the database account. This statement can only be used by a "DBA" account Add the SHOW VOLUME HEADER statement The "SHOW VOLUME HEADER" is added to display the specific volume header's information. Add the SHOW LOG HEADER statement and the SHOW ARCHIVE LOG HEADER statement Add the SHOW HEAP HEADER/CAPICITY statement The "SHOW HEAP HEADER" statement displays the header page of the specified heap. The "SHOW HEAP CAPACITY" statement displays the capacity of the specified heap. Add the SHOW INDEX HEADER/CAPACITY statement The "SHOW INDEX HEADER" statement displays the header page of the specified index. The "SHOW INDEX CAPACITY" statement displays the capacity of the specified index. Add the SHOW SLOTTED PAGE HEADER/SLOTS statement The "SHOW SLOTTED PAGE HEADER OF VOLUME=vol_num AND PAGE=page_num" statement displays the header information of the specified slot page. The "SHOW SLOTTED PAGE SLOTS OF VOLUME=vol_num AND PAGE=page_num" statement displays all slot information of the specified slot page. Support SHA-1, SHA-2, TO_BASE64, and FROM_BASE64 functions. Add SHA-1 and SHA-2 functions Add the TO_BASE64 function and the FROM_BASE64 function. Support the "IF EXISTS" clause for the DROP SERIAL statement. Add a hint, SKIP_UPDATE_NULL to allow a constraint of a certain column from NULL to NOT NULL without data verification. HA New Features CUBRID 9.3.0 contains following improvements in HA environment.  CUBRID allows a broker to connect only to replica Add a parameter that sets the broker to access only to the replica. CSQL can do write operations to slave or replica if it has a special option Add an option to write on the slave DB or the replica DB to CSQL. The statistics information can be updated on the slave node or on the replica node with CSQL. A utility for shrinking the replicating time is added Add a utility to shorten the replication reflection time. Other HA features  Add a functionality to try to reconnect to another node when replication between the CAS and the DB server is delayed. Add a replication latency time to the result of "cubrid statdump". Add the logging functionality for the SQL received by the applylogdb process. Add the functionality which detects a log flush delay caused by a copylogdb delay and writes it on the database server log file.  Improvement of Administrative Convenience Internal status information of SHARD proxy is strengthened The SHARD proxy status information items are added and the number of shard proxy errors can be identified. A number of options are added or changed in the "cubrid broker status" command. A command to test whether the query specified in the DB is successfully executed or not, is added A command to test query execution to the DB and to display whether the execution is successful or has failed has been added. After a query is executed, the transaction is rolled back. If the SHARD is set, query can be executed to all SHARD DBs. With this command, connection status to the DB, user's query permission, and hashing result of the SHARD DB can be checked. Configuration Add the standalone section to cubrid.conf. Add the parameter to define the number of replication-delayed hosts among the hosts defined as db-host in the databases.txt that will try to connect. Utility Add the cubrid_replay utility to replay the SQL log in order to reconfirm the query execution time and query plan. Add the --check-prev-link option and the --repair-prev-link option to the "cubrid checkdb".  Add functionalities of displaying the last connection time by the client with each IP registered in the ACL list of the broker and displaying the number of ACL REJECTs. Add a broker parameter which enables turning off trigger operation and CSQL option. Add the query plan cache information when displaying the "cubrid statdump" command. Add the logging functionality about the result of cubrid utility execution. Drivers [JDBC] Add the functionality to wait without broker connection while a connection object is created. [CCI] Add a function that changes the login timeout value and a function that changes the datasource property. [CCI] Add cci_bind_param_ex(), which can bind even when '\0' exists in the middle of a string. Improvement of Performance SQL Performance Improvement Sampling method is adopted to update the statistics information for shorter UPDATE time. Improve the performance of INSERT operations. Improve the performance of SELECT and SCAN operations by improving page replacement policy of buffer manager. Support loose index scan. Improve the performance of a query which includes aggregate or analytic functions. Improve the performance of a LIKE query. Improve the problem that the INSERT operations take a long time after many DELETE operations. Improve the performance for the insertion of TIMESTAMP type data. Reduce the spent time for generating multiple connections at once. Improve the performance of replicating UPDATE statements. Reduce the spent time for generating indexes in a standalone mode. (--SA-mode) Reduce the spent time for executing many FULL SCAN operations on the same table at the same time. Improve the phenomenon for an application with queries to be relatively slower in Windows than in Linux. Sharding Performance Improvment Improve performance when the statement is reused in the SHARD statement pool. Other Improvments Reduce the time required to create several connections in the application at once.  When a query is executed in an application in the Windows environment, the speed is relatively slower than in the Linux environment. Behavior Changes Some of the functionality in CUBRID 9.3.0 have been changed. SQL Change the operation when the column in the expression of the SELECT list and the alias of the expression are identical with the name of the column of GROUP BY clause. Modify not to create sort merge join execution plan. HA Modify to "reload" only the node information when "cubrid heartbeat reload" command is executed. Add the "cubrid heartbeat replication start/stop " command. Driver [JDBC][CCI] Changed the range of application and the default values of CCI loginTimeout and JDBC connectTimeout. [JDBC][CCI] Modify the system so that queries, that are executed without specifying commit or rollback when the server process is restarted during a transaction or when a failover occurs in the HA environment, are treated as errors. [JDBC] Modify that the JDBC connection object follows the URL's user or password when the user name and the password are entered as "" in the JDBC connection object. Configuration Modify not to apply corresponding broker parameters if the values of broker parameters (LONG_QUERY_TIME and LONG_TRANSACTION_TIME) are 0. Modify the print information and related parameters of the broker access log (ACCESS_LOG) file. The minimum value of log_buffer_size of cubrid.conf is changed from 48KB (3*1page, 16KB=1page) to 2MB (128*1page, 16KB=1page). Utility Displyed values are truncated when "-b" or "-f" option is used in "cubrid broker status" command. Others Replace error messages and utilities messages in Vietnamese and Khmer with that in English. Besides these new features, performance improvements and behavioral changes, there are many bug fixes and minor improvements in resource management. For the full list refer to CUBRID 9.3.0 Release Notes. If you would like to migrate from previous version to the latest CUBRID 9.3.0, please refer to Upgrading to CUBRID 9.3.0. If you have any questions, feel free to leave your comment below. [Less]
Posted over 2 years ago by CUBRID
Today I am excited to announce an updated 9.x branch - CUBRID 9.3.0 has been released. CUBRID 9.3 is the version which stabilized and improved CUBRID 9.2. CUBRID 9.3's DB volume is compatible with 9.2's. CUBRID 9.1 and previous version should ... [More] migrate database. There are a number of new features and performance improvements in 9.3.0 that I will describe below. You can download the latest version of CUBRID 9.3.0 for Windows and Linux from http://www.cubrid.org/?mid=downloads&item=cubrid&os=any&cubrid=9.3.0 New Features The new features of CUBRID 9.3.0 are involved with several database aspects : SQL, HA, Administrative Convenience, Utility and Driver. SQL New Features Support SELECT FOR UPDATE Statement The FOR UPDATE clause can be used in SELECT statements for locking rows returned by the statement for a later UPDATE/DELETE. SELECT * FROM t1 INNER JOIN t2 ON t1.i=t2.i ORDER BY 1 FOR UPDATE OF t1, t2; Support Schema Lock The following two locks for schema are added. SCH-S: Schema stability lock. This lock is obtained while query compile is being executed and guarantees that the schema included in the query is not modified by other transactions. SCH-M: Schema modification lock. This lock is obtained while DDL (ALTER/CREATE/DROP) is being executed and prevents the modified schema from being accessed by other transactions. As the schema lock is applied, the deadlock problem which has occurred when multiple DELETEs on the table without indexes were executed is solved. Support various SHOW syntaxes for checking the internal database information Add the SHOW ACCESS STATUS statement The SHOW ACCESS STATUS statement is added to display the login information of the database account. This statement can only be used by a "DBA" account Add the SHOW VOLUME HEADER statement The "SHOW VOLUME HEADER" is added to display the specific volume header's information. Add the SHOW LOG HEADER statement and the SHOW ARCHIVE LOG HEADER statement Add the SHOW HEAP HEADER/CAPICITY statement The "SHOW HEAP HEADER" statement displays the header page of the specified heap. The "SHOW HEAP CAPACITY" statement displays the capacity of the specified heap. Add the SHOW INDEX HEADER/CAPACITY statement The "SHOW INDEX HEADER" statement displays the header page of the specified index. The "SHOW INDEX CAPACITY" statement displays the capacity of the specified index. Add the SHOW SLOTTED PAGE HEADER/SLOTS statement The "SHOW SLOTTED PAGE HEADER OF VOLUME=vol_num AND PAGE=page_num" statement displays the header information of the specified slot page. The "SHOW SLOTTED PAGE SLOTS OF VOLUME=vol_num AND PAGE=page_num" statement displays all slot information of the specified slot page. Support SHA-1, SHA-2, TO_BASE64, and FROM_BASE64 functions. Add SHA-1 and SHA-2 functions Add the TO_BASE64 function and the FROM_BASE64 function. Support the "IF EXISTS" clause for the DROP SERIAL statement. Add a hint, SKIP_UPDATE_NULL to allow a constraint of a certain column from NULL to NOT NULL without data verification. HA New Features CUBRID 9.3.0 contains following improvements in HA environment.  CUBRID allows a broker to connect only to replica Add a parameter that sets the broker to access only to the replica. CSQL can do write operations to slave or replica if it has a special option Add an option to write on the slave DB or the replica DB to CSQL. The statistics information can be updated on the slave node or on the replica node with CSQL. A utility for shrinking the replicating time is added Add a utility to shorten the replication reflection time. Other HA features  Add a functionality to try to reconnect to another node when replication between the CAS and the DB server is delayed. Add a replication latency time to the result of "cubrid statdump". Add the logging functionality for the SQL received by the applylogdb process. Add the functionality which detects a log flush delay caused by a copylogdb delay and writes it on the database server log file.  Improvement of Administrative Convenience Internal status information of SHARD proxy is strengthened The SHARD proxy status information items are added and the number of shard proxy errors can be identified. A number of options are added or changed in the "cubrid broker status" command. A command to test whether the query specified in the DB is successfully executed or not, is added A command to test query execution to the DB and to display whether the execution is successful or has failed has been added. After a query is executed, the transaction is rolled back. If the SHARD is set, query can be executed to all SHARD DBs. With this command, connection status to the DB, user's query permission, and hashing result of the SHARD DB can be checked. Configuration Add the standalone section to cubrid.conf. Add the parameter to define the number of replication-delayed hosts among the hosts defined as db-host in the databases.txt that will try to connect. Utility Add the cubrid_replay utility to replay the SQL log in order to reconfirm the query execution time and query plan. Add the --check-prev-link option and the --repair-prev-link option to the "cubrid checkdb".  Add functionalities of displaying the last connection time by the client with each IP registered in the ACL list of the broker and displaying the number of ACL REJECTs. Add a broker parameter which enables turning off trigger operation and CSQL option. Add the query plan cache information when displaying the "cubrid statdump" command. Add the logging functionality about the result of cubrid utility execution. Drivers [JDBC] Add the functionality to wait without broker connection while a connection object is created. [CCI] Add a function that changes the login timeout value and a function that changes the datasource property. [CCI] Add cci_bind_param_ex(), which can bind even when '\0' exists in the middle of a string. Improvement of Performance SQL Performance Improvement Sampling method is adopted to update the statistics information for shorter UPDATE time. Improve the performance of INSERT operations. Improve the performance of SELECT and SCAN operations by improving page replacement policy of buffer manager. Support loose index scan. Improve the performance of a query which includes aggregate or analytic functions. Improve the performance of a LIKE query. Improve the problem that the INSERT operations take a long time after many DELETE operations. Improve the performance for the insertion of TIMESTAMP type data. Reduce the spent time for generating multiple connections at once. Improve the performance of replicating UPDATE statements. Reduce the spent time for generating indexes in a standalone mode. (--SA-mode) Reduce the spent time for executing many FULL SCAN operations on the same table at the same time. Improve the phenomenon for an application with queries to be relatively slower in Windows than in Linux. Sharding Performance Improvment Improve performance when the statement is reused in the SHARD statement pool. Other Improvments Reduce the time required to create several connections in the application at once.  When a query is executed in an application in the Windows environment, the speed is relatively slower than in the Linux environment. Behavior Changes Some of the functionality in CUBRID 9.3.0 have been changed. SQL Change the operation when the column in the expression of the SELECT list and the alias of the expression are identical with the name of the column of GROUP BY clause. Modify not to create sort merge join execution plan. HA Modify to "reload" only the node information when "cubrid heartbeat reload" command is executed. Add the "cubrid heartbeat replication start/stop " command. Driver [JDBC][CCI] Changed the range of application and the default values of CCI loginTimeout and JDBC connectTimeout. [JDBC][CCI] Modify the system so that queries, that are executed without specifying commit or rollback when the server process is restarted during a transaction or when a failover occurs in the HA environment, are treated as errors. [JDBC] Modify that the JDBC connection object follows the URL's user or password when the user name and the password are entered as "" in the JDBC connection object. Configuration Modify not to apply corresponding broker parameters if the values of broker parameters (LONG_QUERY_TIME and LONG_TRANSACTION_TIME) are 0. Modify the print information and related parameters of the broker access log (ACCESS_LOG) file. The minimum value of log_buffer_size of cubrid.conf is changed from 48KB (3*1page, 16KB=1page) to 2MB (128*1page, 16KB=1page). Utility Displyed values are truncated when "-b" or "-f" option is used in "cubrid broker status" command. Others Replace error messages and utilities messages in Vietnamese and Khmer with that in English. Besides these new features, performance improvements and behavioral changes, there are many bug fixes and minor improvements in resource management. For the full list refer to CUBRID 9.3.0 Release Notes. If you would like to migrate from previous version to the latest CUBRID 9.3.0, please refer to Upgrading to CUBRID 9.3.0. If you have any questions, feel free to leave your comment below. [Less]
Posted over 2 years ago by CUBRID
Today I am excited to announce an updated 9.x branch - CUBRID 9.3.0 has been released. CUBRID 9.3 is the version which stabilized and improved CUBRID 9.2. CUBRID 9.3's DB volume is compatible with 9.2's. CUBRID 9.1 and previous version should ... [More] migrate database. There are a number of new features and performance improvements in 9.3.0 that I will describe below. You can download the latest version of CUBRID 9.3.0 for Windows and Linux from http://www.cubrid.org/?mid=downloads&item=cubrid&os=any&cubrid=9.3.0 New Features The new features of CUBRID 9.3.0 are involved with several database aspects : SQL, HA, Administrative Convenience, Utility and Driver. SQL New Features Support SELECT FOR UPDATE Statement The FOR UPDATE clause can be used in SELECT statements for locking rows returned by the statement for a later UPDATE/DELETE. SELECT * FROM t1 INNER JOIN t2 ON t1.i=t2.i ORDER BY 1 FOR UPDATE OF t1, t2; Support Schema Lock The following two locks for schema are added. SCH-S: Schema stability lock. This lock is obtained while query compile is being executed and guarantees that the schema included in the query is not modified by other transactions. SCH-M: Schema modification lock. This lock is obtained while DDL (ALTER/CREATE/DROP) is being executed and prevents the modified schema from being accessed by other transactions. As the schema lock is applied, the deadlock problem which has occurred when multiple DELETEs on the table without indexes were executed is solved. Support various SHOW syntaxes for checking the internal database information Add the SHOW ACCESS STATUS statement The SHOW ACCESS STATUS statement is added to display the login information of the database account. This statement can only be used by a "DBA" account Add the SHOW VOLUME HEADER statement The "SHOW VOLUME HEADER" is added to display the specific volume header's information. Add the SHOW LOG HEADER statement and the SHOW ARCHIVE LOG HEADER statement Add the SHOW HEAP HEADER/CAPICITY statement The "SHOW HEAP HEADER" statement displays the header page of the specified heap. The "SHOW HEAP CAPACITY" statement displays the capacity of the specified heap. Add the SHOW INDEX HEADER/CAPACITY statement The "SHOW INDEX HEADER" statement displays the header page of the specified index. The "SHOW INDEX CAPACITY" statement displays the capacity of the specified index. Add the SHOW SLOTTED PAGE HEADER/SLOTS statement The "SHOW SLOTTED PAGE HEADER OF VOLUME=vol_num AND PAGE=page_num" statement displays the header information of the specified slot page. The "SHOW SLOTTED PAGE SLOTS OF VOLUME=vol_num AND PAGE=page_num" statement displays all slot information of the specified slot page. Support SHA-1, SHA-2, TO_BASE64, and FROM_BASE64 functions. Add SHA-1 and SHA-2 functions Add the TO_BASE64 function and the FROM_BASE64 function. Support the "IF EXISTS" clause for the DROP SERIAL statement. Add a hint, SKIP_UPDATE_NULL to allow a constraint of a certain column from NULL to NOT NULL without data verification. HA New Features CUBRID 9.3.0 contains following improvements in HA environment.  CUBRID allows a broker to connect only to replica Add a parameter that sets the broker to access only to the replica. CSQL can do write operations to slave or replica if it has a special option Add an option to write on the slave DB or the replica DB to CSQL. The statistics information can be updated on the slave node or on the replica node with CSQL. A utility for shrinking the replicating time is added Add a utility to shorten the replication reflection time. Other HA features  Add a functionality to try to reconnect to another node when replication between the CAS and the DB server is delayed. Add a replication latency time to the result of "cubrid statdump". Add the logging functionality for the SQL received by the applylogdb process. Add the functionality which detects a log flush delay caused by a copylogdb delay and writes it on the database server log file.  Improvement of Administrative Convenience Internal status information of SHARD proxy is strengthened The SHARD proxy status information items are added and the number of shard proxy errors can be identified. A number of options are added or changed in the "cubrid broker status" command. A command to test whether the query specified in the DB is successfully executed or not, is added A command to test query execution to the DB and to display whether the execution is successful or has failed has been added. After a query is executed, the transaction is rolled back. If the SHARD is set, query can be executed to all SHARD DBs. With this command, connection status to the DB, user's query permission, and hashing result of the SHARD DB can be checked. Configuration Add the standalone section to cubrid.conf. Add the parameter to define the number of replication-delayed hosts among the hosts defined as db-host in the databases.txt that will try to connect. Utility Add the cubrid_replay utility to replay the SQL log in order to reconfirm the query execution time and query plan. Add the --check-prev-link option and the --repair-prev-link option to the "cubrid checkdb".  Add functionalities of displaying the last connection time by the client with each IP registered in the ACL list of the broker and displaying the number of ACL REJECTs. Add a broker parameter which enables turning off trigger operation and CSQL option. Add the query plan cache information when displaying the "cubrid statdump" command. Add the logging functionality about the result of cubrid utility execution. Drivers [JDBC] Add the functionality to wait without broker connection while a connection object is created. [CCI] Add a function that changes the login timeout value and a function that changes the datasource property. [CCI] Add cci_bind_param_ex(), which can bind even when '\0' exists in the middle of a string. Improvement of Performance SQL Performance Improvment Sampling method is adopted to update the statistics information for shorter UPDATE time. Improve the performance of INSERT operations. Improve the performance of SELECT and SCAN operations by improving page replacement policy of buffer manager. Support loose index scan. Improve the performance of a query which includes aggregate or analytic functions. Improve the performance of a LIKE query. Improve the problem that the INSERT operations take a long time after many DELETE operations. Improve the performance for the insertion of TIMESTAMP type data. Reduce the spent time for generating multiple connections at once. Improve the performance of replicating UPDATE statements. Reduce the spent time for generating indexes in a standalone mode. (--SA-mode) Reduce the spent time for executing many FULL SCAN operations on the same table at the same time. Improve the phenomenon for an application with queries to be relatively slower in Windows than in Linux. Sharding Performance Improvment Improve performance when the statement is reused in the SHARD statement pool. Other Improvments Reduce the time required to create several connections in the application at once.  When a query is executed in an application in the Windows environment, the speed is relatively slower than in the Linux environment. Behavior Changes Some of the functionality in CUBRID 9.3.0 have been changed. SQL Change the operation when the column in the expression of the SELECT list and the alias of the expression are identical with the name of the column of GROUP BY clause. Modify not to create sort merge join execution plan. HA Modify to "reload" only the node information when "cubrid heartbeat reload" command is executed. Add the "cubrid heartbeat replication start/stop " command. Driver [JDBC][CCI] Changed the range of application and the default values of CCI loginTimeout and JDBC connectTimeout. [JDBC][CCI] Modify the system so that queries, that are executed without specifying commit or rollback when the server process is restarted during a transaction or when a failover occurs in the HA environment, are treated as errors. [JDBC] Modify that the JDBC connection object follows the URL's user or password when the user name and the password are entered as "" in the JDBC connection object. Configuration Modify not to apply corresponding broker parameters if the values of broker parameters (LONG_QUERY_TIME and LONG_TRANSACTION_TIME) are 0. Modify the print information and related parameters of the broker access log (ACCESS_LOG) file. The minimum value of log_buffer_size of cubrid.conf is changed from 48KB (3*1page, 16KB=1page) to 2MB (128*1page, 16KB=1page). Utility Displyed values are truncated when "-b" or "-f" option is used in "cubrid broker status" command. Others Replace error messages and utilities messages in Vietnamese and Khmer with that in English. Besides these new features, performance improvements and behavioral changes, there are many bug fixes and minor improvements in resource management. For the full list refer to CUBRID 9.3.0 Release Notes. If you would like to migrate from previous version to the latest CUBRID 9.3.0, please refer to Upgrading to CUBRID 9.3.0. If you have any questions, feel free to leave your comment below. [Less]
Posted over 2 years ago by CUBRID
Today I am excited to announce an updated 9.x branch - CUBRID 9.3.0 has been released. CUBRID 9.3 is the version which stabilized and improved CUBRID 9.2. CUBRID 9.3's DB volume is compatible with 9.2's. CUBRID 9.1 and previous version should ... [More] migrate database. There are a number of new features and performance improvements in 9.3.0 that I will describe below. You can download the latest version of CUBRID 9.3.0 for Windows and Linux from http://www.cubrid.org/?mid=downloads&item=cubrid&os=any&cubrid=9.3.0 New Features The new features of CUBRID 9.3.0 are involved with several database aspects : SQL, HA, Administrative Convenience, Utility and Driver. SQL New Features Support SELECT FOR UPDATE Statement The FOR UPDATE clause can be used in SELECT statements for locking rows returned by the statement for a later UPDATE/DELETE. SELECT * FROM t1 INNER JOIN t2 ON t1.i=t2.i ORDER BY 1 FOR UPDATE OF t1, t2; Support Schema Lock The following two locks for schema are added. SCH-S: Schema stability lock. This lock is obtained while query compile is being executed and guarantees that the schema included in the query is not modified by other transactions. SCH-M: Schema modification lock. This lock is obtained while DDL (ALTER/CREATE/DROP) is being executed and prevents the modified schema from being accessed by other transactions. As the schema lock is applied, the deadlock problem which has occurred when multiple DELETEs on the table without indexes were executed is solved. Support various SHOW syntaxes for checking the internal database information Add the SHOW ACCESS STATUS statement The SHOW ACCESS STATUS statement is added to display the login information of the database account. This statement can only be used by a "DBA" account Add the SHOW VOLUME HEADER statement The "SHOW VOLUME HEADER" is added to display the specific volume header's information. Add the SHOW LOG HEADER statement and the SHOW ARCHIVE LOG HEADER statement Add the SHOW HEAP HEADER/CAPICITY statement The "SHOW HEAP HEADER" statement displays the header page of the specified heap. The "SHOW HEAP CAPACITY" statement displays the capacity of the specified heap. Add the SHOW INDEX HEADER/CAPACITY statement The "SHOW INDEX HEADER" statement displays the header page of the specified index. The "SHOW INDEX CAPACITY" statement displays the capacity of the specified index. Add the SHOW SLOTTED PAGE HEADER/SLOTS statement The "SHOW SLOTTED PAGE HEADER OF VOLUME=vol_num AND PAGE=page_num" statement displays the header information of the specified slot page. The "SHOW SLOTTED PAGE SLOTS OF VOLUME=vol_num AND PAGE=page_num" statement displays all slot information of the specified slot page. Support SHA-1, SHA-2, TO_BASE64, and FROM_BASE64 functions. Add SHA-1 and SHA-2 functions Add the TO_BASE64 function and the FROM_BASE64 function. Support the "IF EXISTS" clause for the DROP SERIAL statement. Add a hint, SKIP_UPDATE_NULL to allow a constraint of a certain column from NULL to NOT NULL without data verification. HA New Features CUBRID 9.3.0 contains following improvements in HA environment.  CUBRID allows a broker to connect only to replica Add a parameter that sets the broker to access only to the replica. CSQL can do write operations to slave or replica if it has a special option Add an option to write on the slave DB or the replica DB to CSQL. The statistics information can be updated on the slave node or on the replica node with CSQL. A utility for shrinking the replicating time is added Add a utility to shorten the replication reflection time. Other HA features  Add a functionality to try to reconnect to another node when replication between the CAS and the DB server is delayed. Add a replication latency time to the result of "cubrid statdump". Add the logging functionality for the SQL received by the applylogdb process. Add the functionality which detects a log flush delay caused by a copylogdb delay and writes it on the database server log file.  Improvement of Administrative Convenience Internal status information of SHARD proxy is strengthened The SHARD proxy status information items are added and the number of shard proxy errors can be identified. A number of options are added or changed in the "cubrid broker status" command. A command to test whether the query specified in the DB is successfully executed or not, is added A command to test query execution to the DB and to display whether the execution is successful or has failed has been added. After a query is executed, the transaction is rolled back. If the SHARD is set, query can be executed to all SHARD DBs. With this command, connection status to the DB, user's query permission, and hashing result of the SHARD DB can be checked. Configuration Add the standalone section to cubrid.conf. Add the parameter to define the number of replication-delayed hosts among the hosts defined as db-host in the databases.txt that will try to connect. Utility Add the cubrid_replay utility to replay the SQL log in order to reconfirm the query execution time and query plan. Add the --check-prev-link option and the --repair-prev-link option to the "cubrid checkdb".  Add functionalities of displaying the last connection time by the client with each IP registered in the ACL list of the broker and displaying the number of ACL REJECTs. Add a broker parameter which enables turning off trigger operation and CSQL option. Add the query plan cache information when displaying the "cubrid statdump" command. Add the logging functionality about the result of cubrid utility execution. Drivers [JDBC] Add the functionality to wait without broker connection while a connection object is created. [CCI] Add a function that changes the login timeout value and a function that changes the datasource property. [CCI] Add cci_bind_param_ex(), which can bind even when '\0' exists in the middle of a string. Improvement of Performance SQL Performance Improvement Sampling method is adopted to update the statistics information for shorter UPDATE time. Improve the performance of INSERT operations. Improve the performance of SELECT and SCAN operations by improving page replacement policy of buffer manager. Support loose index scan. Improve the performance of a query which includes aggregate or analytic functions. Improve the performance of a LIKE query. Improve the problem that the INSERT operations take a long time after many DELETE operations. Improve the performance for the insertion of TIMESTAMP type data. Reduce the spent time for generating multiple connections at once. Improve the performance of replicating UPDATE statements. Reduce the spent time for generating indexes in a standalone mode. (--SA-mode) Reduce the spent time for executing many FULL SCAN operations on the same table at the same time. Improve the phenomenon for an application with queries to be relatively slower in Windows than in Linux. Sharding Performance Improvment Improve performance when the statement is reused in the SHARD statement pool. Other Improvments Reduce the time required to create several connections in the application at once.  When a query is executed in an application in the Windows environment, the speed is relatively slower than in the Linux environment. Behavior Changes Some of the functionality in CUBRID 9.3.0 have been changed. SQL Change the operation when the column in the expression of the SELECT list and the alias of the expression are identical with the name of the column of GROUP BY clause. Modify not to create sort merge join execution plan. HA Modify to "reload" only the node information when "cubrid heartbeat reload" command is executed. Add the "cubrid heartbeat replication start/stop " command. Driver [JDBC][CCI] Changed the range of application and the default values of CCI loginTimeout and JDBC connectTimeout. [JDBC][CCI] Modify the system so that queries, that are executed without specifying commit or rollback when the server process is restarted during a transaction or when a failover occurs in the HA environment, are treated as errors. [JDBC] Modify that the JDBC connection object follows the URL's user or password when the user name and the password are entered as "" in the JDBC connection object. Configuration Modify not to apply corresponding broker parameters if the values of broker parameters (LONG_QUERY_TIME and LONG_TRANSACTION_TIME) are 0. Modify the print information and related parameters of the broker access log (ACCESS_LOG) file. The minimum value of log_buffer_size of cubrid.conf is changed from 48KB (3*1page, 16KB=1page) to 2MB (128*1page, 16KB=1page). Utility Displyed values are truncated when "-b" or "-f" option is used in "cubrid broker status" command. Others Replace error messages and utilities messages in Vietnamese and Khmer with that in English. Besides these new features, performance improvements and behavioral changes, there are many bug fixes and minor improvements in resource management. For the full list refer to CUBRID 9.3.0 Release Notes. If you would like to migrate from previous version to the latest CUBRID 9.3.0, please refer to Upgrading to CUBRID 9.3.0. If you have any questions, feel free to leave your comment below. [Less]
Posted over 2 years ago by newpcraft
We are releasing the heart bleed vulnerability patch of CUBRID Manager Server. You have already seen the news regarding Heart Bleed bug, this vulnerability affecting a lot of web site which are using OpenSSL to provide https protocol. CUBRID Manager ... [More] Server uses OpenSSL in its https api and if you are using on the outside of network zone, it might be taken the vulnerability problem. Because of using OpenSSL 1.0.1c on CUBRID Manager Server to provide https CM API, we highly recommend to patch using this heart bleed vulnerability patch version.  For additional help to patch, visit http://www.cubrid.org/wiki_tools/entry/2014-04-16-cubrid-manager-server-openssl-patch. [Less]
Posted over 2 years ago by newpcraft
We are releasing the heart bleed vulnerability patch of CUBRID Manager Server. You have already seen the news regarding Heart Bleed bug, this vulnerability affecting a lot of web site which are using OpenSSL to provide https protocol. CUBRID Manager ... [More] Server uses OpenSSL in its https api and if you are using on the outside of network zone, it might be taken the vulnerability problem. Because of using OpenSSL 1.0.1c on CUBRID Manager Server to provide https CM API, we highly recommend to patch using this heart bleed vulnerability patch version.  For additional help to patch, visit http://www.cubrid.org/wiki_tools/entry/2014-04-16-cubrid-manager-server-openssl-patch. [Less]
Posted almost 3 years ago by Esen Sagynov
Last month we announced CUBRID 8.4.4, the latest version of 8.4.x branch, with new SQL Profiling feature and numerous stability improvements. Today I am excited to announce an update to the 9.x branch - all new CUBRID 9.2.0. Most new features and ... [More] stability improvements of the latest 8.4.4 version have been applied to CUBRID 9.2.0 as well. However, there are several more new features and performance improvements in 9.2.0 that I will describe below. You can download the latest version of CUBRID 9.2.0 for Windows, Linux and AIX from http://www.cubrid.org/?mid=downloads&item=cubrid&os=detect&cubrid=9.2.0. New Features SQL profiling Prior to 8.4.4 and 9.2.0 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_nationTrace 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) New SQL syntax In CUBRID 9.2.0 we have added new SQL functions and statements. Analytic functions FIRST_VALUE, LAST_VALUE and NTH_VALUE functions Aggregate-analytic functions CUME_DIST, PERCENT_RANK and MEDIAN functions. Support NULLS FIRST, NULLS LAST syntax to the ORDER BY clause. Support DROP VIEW IF EXISTS statement. AIX OS is now supported CUBRID 9.2.0 now supports AIX Unix operating system. Refer to Recommendations for installing CUBRID .sh package in AIX. Improvements In CUBRID 9.2.0 there are over 140 stability and usability improvements which include the following: Administrative Convenience One of the major improvement is the SQL profiling which I've already explained above. Sort the output of the tranlist command by the specified column. 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. HA Added two new parameters to configure the replication delay interval to teh replica node and specify time for stopping replication. An option to change the failover method in HA environment. Sharding cci_set_db_parameter function can be used in SHARD environment. The password of shard DB can be also specified with an environment variable. Configuration Added a parameter to adjust the maximum number of replication archive logs. Added a system parameter to specify transaction rollback when lock escalation occurs. Added CONNECT_ORDER broker parameter which allows to specify the order brokers access the DB host when multiple HA/REPLICA DBs are configured. Add a generic_vol_prealloc_size parameter that allows to maintain a certain amount of free space in GENERIC volume to prevent the low performance caused by the sudden increase of a GENERIC volume. Globalization Support Romanian ro_RO locale. Hash partitioning is now available for all collations. Performance The in-memory sort optimization is added to process the query by saving the records that match the ORDER BY ... LIMIT condition to the sort buffer. Query performance improved by applying SORT-LIMIT optimization while executing the ORDER BY ... LIMIT clause in the join query. Query plan is rewritten when the proper data volume is exceeded during the re-executuion of prepare for the same query statement. Statistical information of only the added index is updated. Fix to use an index when a subquery is given in a START WITH clause as a condition in a hierarchical query As a result of these improvements, the performance of SELECT operations in CUBRID 9.2.0 has improved by 23%. Figure 1: Result of SELECT Operation of YCSB Benchmark (Master Server). For more performance and QA results, refer to CUBRID 9.2.0 QA Completion Report. Behavioral changes Some of the functionality in CUBRID 9.2.0 have been changed. SQL 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. Globalization CUBRID default data/time format is available when TO_CHAR, TO_DATE, TO_DATETIME, or TO_TIMESTAMP SQL functions are called without specifying the date/time format. The collation and charset of an ENUM type attribute is no longer propagated from its components. HA Master with low priority is changed to slave when split-brain occurs. Sharding The "cubrid shard" command that controls the SHARD is removed; it is now controlled by the "cubrid broker" command. SHARD-related parameters are configured in cubrid_broker.conf instead of shard.conf. Some SHARD-related parameter names are changed. Refer to Changing SHARD-related parameter names. Driver 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. Utility Locale should be specified when creating a database. Now the decimal values output by some utilities in Linux and Windows are same. Configurations 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. PHRO is removed from the ACCESS_MODE of the broker. Among the system parameters that a user without DBA permission can change dynamically, "client" or the "client/server" parameter can now be changed. Other Asynchronous query mode is no longer supported. Besides these improvements and behavioral changes, there are many bug fixes and minor improvements in resource management. For the full list refer to CUBRID 9.2.0 Release Notes. If you would like to migrate from previous version to the latest CUBRID 9.2.0, please refer to Upgrading to CUBRID 9.2.0. If you have any questions, feel free to leave your comment below. [Less]
Posted almost 3 years ago by newpcraft
Last month we announced CUBRID 8.4.4, the latest version of 8.4.x branch, with new SQL Profiling feature and numerous stability improvements. Today I am excited to announce an update to the 9.x branch - all new CUBRID 9.2.0. Most new features and ... [More] stability improvements of the latest 8.4.4 version have been applied to CUBRID 9.2.0 as well. However, there are several more new features and performance improvements in 9.2.0 that I will describe below. You can download the latest version of CUBRID 9.2.0 for Windows and Linux from http://www.cubrid.org/?mid=downloads&item=cubrid&os=detect&cubrid=9.2.0. New Features SQL profiling Prior to 8.4.4 and 9.2.0 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_nationTrace 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) New SQL syntax In CUBRID 9.2.0 we have added new SQL functions and statements. Analytic functions FIRST_VALUE, LAST_VALUE and NTH_VALUE functions Aggregate-analytic functions CUME_DIST, PERCENT_RANK and MEDIAN functions. Support NULLS FIRST, NULLS LAST syntax to the ORDER BY clause. Support DROP VIEW IF EXISTS statement. Improvements In CUBRID 9.2.0 there are over 140 stability and usability improvements which include the following: Administrative Convenience One of the major improvement is the SQL profiling which I've already explained above. Sort the output of the tranlist command by the specified column. 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. HA Added two new parameters to configure the replication delay interval to teh replica node and specify time for stopping replication. An option to change the failover method in HA environment. Sharding cci_set_db_parameter function can be used in SHARD environment. The password of shard DB can be also specified with an environment variable. Configuration Added a parameter to adjust the maximum number of replication archive logs. Added a system parameter to specify transaction rollback when lock escalation occurs. Added CONNECT_ORDER broker parameter which allows to specify the order brokers access the DB host when multiple HA/REPLICA DBs are configured. Add a generic_vol_prealloc_size parameter that allows to maintain a certain amount of free space in GENERIC volume to prevent the low performance caused by the sudden increase of a GENERIC volume. Globalization Support Romanian ro_RO locale. Hash partitioning is now available for all collations. Performance The in-memory sort optimization is added to process the query by saving the records that match the ORDER BY ... LIMIT condition to the sort buffer. Query performance improved by applying SORT-LIMIT optimization while executing the ORDER BY ... LIMIT clause in the join query. Query plan is rewritten when the proper data volume is exceeded during the re-executuion of prepare for the same query statement. Statistical information of only the added index is updated. Fix to use an index when a subquery is given in a START WITH clause as a condition in a hierarchical query As a result of these improvements, the performance of SELECT operations in CUBRID 9.2.0 has improved by 23%. Figure 1: Result of SELECT Operation of YCSB Benchmark (Master Server). For more performance and QA results, refer to CUBRID 9.2.0 QA Completion Report. Behavioral changes Some of the functionality in CUBRID 9.2.0 have been changed. SQL 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. Globalization CUBRID default data/time format is available when TO_CHAR, TO_DATE, TO_DATETIME, or TO_TIMESTAMP SQL functions are called without specifying the date/time format. The collation and charset of an ENUM type attribute is no longer propagated from its components. HA Master with low priority is changed to slave when split-brain occurs. Sharding The "cubrid shard" command that controls the SHARD is removed; it is now controlled by the "cubrid broker" command. SHARD-related parameters are configured in cubrid_broker.conf instead of shard.conf. Some SHARD-related parameter names are changed. Refer to Changing SHARD-related parameter names. Driver 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. Utility Locale should be specified when creating a database. Now the decimal values output by some utilities in Linux and Windows are same. Configurations 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. PHRO is removed from the ACCESS_MODE of the broker. Among the system parameters that a user without DBA permission can change dynamically, "client" or the "client/server" parameter can now be changed. Other Asynchronous query mode is no longer supported. Besides these improvements and behavioral changes, there are many bug fixes and minor improvements in resource management. For the full list refer to CUBRID 9.2.0 Release Notes. If you would like to migrate from previous version to the latest CUBRID 9.2.0, please refer to Upgrading to CUBRID 9.2.0. If you have any questions, feel free to leave your comment below. [Less]
Posted almost 3 years ago by newpcraft
Last month we announced CUBRID 8.4.4, the latest version of 8.4.x branch, with new SQL Profiling feature and numerous stability improvements. Today I am excited to announce an update to the 9.x branch - all new CUBRID 9.2.0. Most new features and ... [More] stability improvements of the latest 8.4.4 version have been applied to CUBRID 9.2.0 as well. However, there are several more new features and performance improvements in 9.2.0 that I will describe below. You can download the latest version of CUBRID 9.2.0 for Windows and Linux from http://www.cubrid.org/?mid=downloads&item=cubrid&os=detect&cubrid=9.2.0. New Features SQL profiling Prior to 8.4.4 and 9.2.0 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_nationTrace 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) New SQL syntax In CUBRID 9.2.0 we have added new SQL functions and statements. Analytic functions FIRST_VALUE, LAST_VALUE and NTH_VALUE functions Aggregate-analytic functions CUME_DIST, PERCENT_RANK and MEDIAN functions. Support NULLS FIRST, NULLS LAST syntax to the ORDER BY clause. Support DROP VIEW IF EXISTS statement. Improvements In CUBRID 9.2.0 there are over 140 stability and usability improvements which include the following: Administrative Convenience One of the major improvement is the SQL profiling which I've already explained above. Sort the output of the tranlist command by the specified column. 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. HA Added two new parameters to configure the replication delay interval to teh replica node and specify time for stopping replication. An option to change the failover method in HA environment. Sharding cci_set_db_parameter function can be used in SHARD environment. The password of shard DB can be also specified with an environment variable. Configuration Added a parameter to adjust the maximum number of replication archive logs. Added a system parameter to specify transaction rollback when lock escalation occurs. Added CONNECT_ORDER broker parameter which allows to specify the order brokers access the DB host when multiple HA/REPLICA DBs are configured. Add a generic_vol_prealloc_size parameter that allows to maintain a certain amount of free space in GENERIC volume to prevent the low performance caused by the sudden increase of a GENERIC volume. Globalization Support Romanian ro_RO locale. Hash partitioning is now available for all collations. Performance The in-memory sort optimization is added to process the query by saving the records that match the ORDER BY ... LIMIT condition to the sort buffer. Query performance improved by applying SORT-LIMIT optimization while executing the ORDER BY ... LIMIT clause in the join query. Query plan is rewritten when the proper data volume is exceeded during the re-executuion of prepare for the same query statement. Statistical information of only the added index is updated. Fix to use an index when a subquery is given in a START WITH clause as a condition in a hierarchical query As a result of these improvements, the performance of SELECT operations in CUBRID 9.2.0 has improved by 23%. Figure 1: Result of SELECT Operation of YCSB Benchmark (Master Server). For more performance and QA results, refer to CUBRID 9.2.0 QA Completion Report. Behavioral changes Some of the functionality in CUBRID 9.2.0 have been changed. SQL 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. Globalization CUBRID default data/time format is available when TO_CHAR, TO_DATE, TO_DATETIME, or TO_TIMESTAMP SQL functions are called without specifying the date/time format. The collation and charset of an ENUM type attribute is no longer propagated from its components. HA Master with low priority is changed to slave when split-brain occurs. Sharding The "cubrid shard" command that controls the SHARD is removed; it is now controlled by the "cubrid broker" command. SHARD-related parameters are configured in cubrid_broker.conf instead of shard.conf. Some SHARD-related parameter names are changed. Refer to Changing SHARD-related parameter names. Driver 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. Utility Locale should be specified when creating a database. Now the decimal values output by some utilities in Linux and Windows are same. Configurations 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. PHRO is removed from the ACCESS_MODE of the broker. Among the system parameters that a user without DBA permission can change dynamically, "client" or the "client/server" parameter can now be changed. Other Asynchronous query mode is no longer supported. Besides these improvements and behavioral changes, there are many bug fixes and minor improvements in resource management. For the full list refer to CUBRID 9.2.0 Release Notes. If you would like to migrate from previous version to the latest CUBRID 9.2.0, please refer to Upgrading to CUBRID 9.2.0. If you have any questions, feel free to leave your comment below. [Less]
Posted about 3 years ago by Esen Sagynov
Today we are releasing a new version of CUBRID driver for Nodej.s. node-cubrid 2.1.0 has a few API improvements which aim to provide more convenient APIs with full backward compatibility. However, the main objective of this release is to refactor ... [More] the driver to achieve significant performance improvement by leveraging the characteristics of V8 and Node.js platforms. Continue reading to learn more about the changes. Improvements I will explain the changes chronologically. We have added Tavis Continuous Integration support to node-cubrid project. Now all 268K assertions are automatically performed on Travis servers upon every commit. Check out the latest node-cubrid bulid status at https://travis-ci.org/CUBRID/node-cubrid/builds.Through Travis we can now guarantee that node-cubrid works on all major Node.js releases as well as CUBRID Server releases. This node-cubrid 2.1.0 is even compatible with the latest CUBRID 8.4.4 version we released last week.To install CUBRID on Travis servers we use CUBRID Chef Cookbook.  Besides the Travis CI integration, we have added Coveralls Code Coverage support. Now whenever someone pushes the commit, Coveralls will provide a percentage change in code coverage, whether the code change has made a contribution to code coverage or instead decreased it. Very convenient and encouraging plarform to write more tests. To see the current code coverage status of node-cubrid project, visit https://coveralls.io/r/CUBRID/node-cubrid. At this moment we provide 89% code coverage. Now we exactly know how many tests we need to add more and which lines of the code we need to test. For those users who come from MySQL, we have added alias functions like end() in node-mysql for node-cubrid's close() function. Same goes for createConnection() alias for createCUBRIDConnection(). Now if you migrate to node-cubrid, there is less code you need to change in your application.  Now createConnection() accepts an object of connection parameters. After all JavaScript is all about objects. Connection timeout parameter can now be supplied to createConnection(). query() function now accepts params object which you can use to pass an array of values to bind to ? placeholders in the provided SQL query. _sqlFormat() function in Helpers object, which is used to format an SQL query by replacing ? placeholder with respective bind values, is now smarter. Now numbers are passed to the query as they are without being wrapped in single quotes as if they were strings, though users can wrap them if necessary. If you pass a Date object, it will correctly be converted into CUBRID compatible DATETIME string format which can be stored in DATE, DATETIME, and TIMESTAMP columns. Performance Improvement through Major Code Refactoring As I mentioned at the beginning of this post, the core objective of this release is to refactor the driver to improve the performance of the driver. There are several refactoring works we have performed in this release. Major refactoring of buffer parsers which handle server responses. Major refactoring of protocol packet wrters to optimize the work with the Buffer. Complete replacement of the Queries Queueing logic. Buffer parsers refactoring Prior to this 2.1.0 release, node-cubrid had many duplicate codes. All functions which initiate network communication with the CUBRID Server used to implement almost same functionality to read the data from the socket and prepare it for parsing. Though each function does need a separate logic to parse the buffer data, some functionality can be abstracted like reading bytes from the socket, and performing the basic preparation of the data before it is passed to the parser. There is one more thing we have improved in buffer parsers: it is the work with the instances of Node.js Buffer class. The idea is that memory allocation through Buffer is not as fast as through a local heap of V8 (the JavaScript engine Node.js runs on top of). Moreover, resizing an existing buffer is quite expensive. There is a great inspirational video by Trevor Norris from Mozilla Working with Node.js Buffers and Streams [Youtube] which cover this topic. I highly recommend watching it. Prior to 2.1.0, whenever node-cubrid received a chunk of data from the server, it concatenated this chunk to the main buffer object of this particular request. Since we do not know the potential size of the incoming stream of data, we cannot preallocate enough buffer memory to avoid buffer resizing. This resulted in constant creation, resizing and copying of buffers upon every arrival of the data from the server. In node-cubrid 2.1.0 we have resolved both of these issues: refactored buffer parsers completely to remove any code duplication and improved the work with the Buffer. Now, all functions which initiate network communication use the same API to read data from the socket and prepare it for parsing. To resolve the second issues, we started leveraging the features of CUBRID Communication Protocol. In CUBRID Protocol when a server sends a data packet to a client, the first four bytes (the length of an integer type) represents the length of the incoming data packet. Thus, after receiving the first piece of the data packet, we can learn how many bytes will be necessary to keep the entire packet in a single Buffer instance. Knowing this value, we can create a Buffer instance with enough memory and start reading the remaining data from the pipe into this Buffer instance. This way we avoid buffer resizing completely. Refactoring the protocol packet wrters Just like with Buffer Readers (or Packet Readers) node-cubrid has Buffer Writers which we call Packet Writers. Since the Packet Writers also write into a buffer and send it over the wire, the same rule applies: we needed to optimize how writers work with the Buffer. Unlike with reading data sent by the server, when writing data into the buffer to send it to the server, we know exactly the length of this data. So, why not create the buffer with enough memory in advance? That's what we did. In 2.1.0, we create a Buffer instance only once for a request and write the entire payload into it, thus avoid buffer resizing. Refactoring Queries Queueing logic The third major refactoring affected how queryies queueing work in node-cubrid. We have introduced queries queueing in version 2.0.0. At the time it was implemented via the setTimer() function. Every X period the internal logic would check if there is a query the user wants to run. Obviously this creates three problems for us: one that forces us to manage the queue and check if there is anything in the queue; second there is a potential loss of time in between the queries. Imagine the case when the query A has started in time X and is completed in X + 60, while the timer will check the queue only at X + 100. Why lose these previous 40 units of the time? the third issue is that there is a potential problem when a user can confuse and call the original query()/execute() functions instead of dedicated addQuery()/addNonQuery() queue related functions which would result in an error that tells that another query is already running. To address these issues, we have completely replaced the old queueing logic with a new, more efficient and lightweight one which does not incur any delay. To leverage the new queueing mechanism we had to process all user request, which initiate a network communication with the server, though a queue. Prior to 2.1.0 only those queries which were added by addQuery()/addNonQuery() functions were processed by the queue. Now, everything is processed by the queue even requests to close the query, commit the transaction or fetch more data. By processing all requests by one common queueing mechanism allows us to avoid "another query is already running" errors all together. Since everything goes through the queue, there is no way two requests are run at the same time within one connection. The new queue processes the pending request the moment the previous one is completed. Thus there is no any delay in executing the query. Moreover, this helps us remove the headache of managing and checking the timer. Now the query queueing logic is very efficient. If you check the source of the Queue.js module, you will notice that it's only 48 lines of code including comments and empty lines. Other minor refacroring There are a few other minor refactoring work we have also done. For example, JavaScript provides two very convenient functions like call() and apply() which you can use to alter the reference to the current context of the function. However, if you use it too often, it affects the performance. Previously, in node-cubrid there were quite many usages of these functions. Now we do not call them at all for the sake of better performance. We have also refactored most functions by removing unnecessary and repetitive logic. For the project we have also refactored the test suites by gathering all of them in a single test directory. Soon we will publish the performance test results which will compare the previous 2.0.2 release with this new 2.1.0 release. To see the full list of changes, refer to CHANGELOG.md file. If you have any questions or feature requests, feel free to leave your comments below or create an issue in Github. [Less]