Oracle

MySQL 内核深度优化

余生长醉 提交于 2021-02-05 15:20:29
MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务型)、存在多个分支、读写效率瓶颈等问题。 一.内核性能的优化 由于腾讯云上的DB基本都需要跨园区灾备的特性,因此CDB for MySQL的优化主要针对主从DB部署在跨园区网络拓扑的前提下,重点去解决真实部署环境下的性能难题。经过分析和调研,我们将优化的思路归纳为:“消除冗余I/O、缩短I/O路径和避免大锁竞争”。以下是内核性能的部分案例: 1.主备DB间的复制优化 问题分析 如上图所示,在原生MySQL的复制架构中,Master侧通过Dump线程不断发送Binlog事件给Slave的I/O线程,Slave的I/O线程在接受到Binlog事件后,有两个主要的动作: 写入到Relay Log中,这个过程会和Slave SQL线程争抢保护Relay Log的锁。 更新复制元数据(包含Master的位置等信息)。 优化方法 经过分析,我们的优化策略是: 优化效果 如上图所示,经过优化:左图35.79%的锁竞争(futex)已经被完全消除;同压测压力下,56.15%的文件I/O开销被优化到19.16%,Slave I/O线程被优化为预期的I/O密集型线程。 2

C# Error ORA 00907: Missing Right Parenthesis

半城伤御伤魂 提交于 2021-02-05 12:36:39
问题 My error: ORA 00907: Missing Right Parenthesis My code: CREATE TABLE TBL_TD_USER ( USER_ID INTEGER(10) NOT NULL, USER_NAME VARCHAR2(20) NOT NULL, PASSWORD VARCHAR2(20) NOT NULL, CREATED_BY VARCHAR2(20) NOT NULL, CREATED_DATE DATE NOT NULL, MODIFIED_BY VARCHAR2(20) NOT NULL, MODIFIED_DATE DATE NOT NULL, IS_ACTIVE CHARACTER(1) NOT NULL, DESCRIPTION VARCHAR2(200) NOT NULL, CONSTRAINT TBL_TD_USER PRIMARY KEY (USER_ID) ); 回答1: This works: CREATE TABLE TBL_TD_USER ( USER_ID INTEGER NOT NULL , USER

C# Error ORA 00907: Missing Right Parenthesis

廉价感情. 提交于 2021-02-05 12:35:13
问题 My error: ORA 00907: Missing Right Parenthesis My code: CREATE TABLE TBL_TD_USER ( USER_ID INTEGER(10) NOT NULL, USER_NAME VARCHAR2(20) NOT NULL, PASSWORD VARCHAR2(20) NOT NULL, CREATED_BY VARCHAR2(20) NOT NULL, CREATED_DATE DATE NOT NULL, MODIFIED_BY VARCHAR2(20) NOT NULL, MODIFIED_DATE DATE NOT NULL, IS_ACTIVE CHARACTER(1) NOT NULL, DESCRIPTION VARCHAR2(200) NOT NULL, CONSTRAINT TBL_TD_USER PRIMARY KEY (USER_ID) ); 回答1: This works: CREATE TABLE TBL_TD_USER ( USER_ID INTEGER NOT NULL , USER

Mutating table on Oracle SQL trigger

烈酒焚心 提交于 2021-02-05 12:13:40
问题 I'm trying to do a trigger but I get a mutating table error. The SQL code is something like this: CREATE OR REPLACE TRIGGER CHK_Apartado_D BEFORE INSERT OR UPDATE ON CONTRACTS FOR EACH ROW DECLARE errorvisualizacion EXCEPTION; local_enddate DATE; BEGIN SELECT enddate INTO local_enddate FROM CONTRACTS WHERE clientid=:new.clientid; IF local_enddate > SYSDATE OR local_enddate IS NULL THEN UPDATE CONTRACTS SET enddate = SYSDATE - 1 WHERE clientid=:new.clientid; END IF; END CHK_Apartado_B; / And

Inserting single quote in JDBC for SQL Query not working

感情迁移 提交于 2021-02-05 12:04:53
问题 I'm having issues dealing with the single quote while using it in a prepared statement in JAVA via Oracle JDBC. Let's say we have a table Restaurant with a column restaurant_name with 1 value : Jack's Deli I want to use a simple prepared statement query like this: String result = "Jack\'\'s Deli" String sqlStatement = "select * from Restaurant where restauraunt_name like ? escape '\\' "; PreparedStatement pStmt = conn.prepareStatement(sqlStatement); pstmt.setString(1, result); The result

Inserting single quote in JDBC for SQL Query not working

ぐ巨炮叔叔 提交于 2021-02-05 12:01:30
问题 I'm having issues dealing with the single quote while using it in a prepared statement in JAVA via Oracle JDBC. Let's say we have a table Restaurant with a column restaurant_name with 1 value : Jack's Deli I want to use a simple prepared statement query like this: String result = "Jack\'\'s Deli" String sqlStatement = "select * from Restaurant where restauraunt_name like ? escape '\\' "; PreparedStatement pStmt = conn.prepareStatement(sqlStatement); pstmt.setString(1, result); The result

Inserting single quote in JDBC for SQL Query not working

安稳与你 提交于 2021-02-05 12:01:06
问题 I'm having issues dealing with the single quote while using it in a prepared statement in JAVA via Oracle JDBC. Let's say we have a table Restaurant with a column restaurant_name with 1 value : Jack's Deli I want to use a simple prepared statement query like this: String result = "Jack\'\'s Deli" String sqlStatement = "select * from Restaurant where restauraunt_name like ? escape '\\' "; PreparedStatement pStmt = conn.prepareStatement(sqlStatement); pstmt.setString(1, result); The result

dynamically pass table name in oracle for loop

独自空忆成欢 提交于 2021-02-05 11:51:41
问题 Is it possible to dynamically pass table name in oracle for loop ? e.g :- for nm in ('select * from '|| table_name)) loop dbms_output.put_line('chetan') ; end loop; 回答1: You can use a REF CURSOR type cursor. From Oracle Doc: (contains also binds - you don't asked for them...) CREATE OR REPLACE PROCEDURE query_invoice( month VARCHAR2, year VARCHAR2) IS TYPE cur_typ IS REF CURSOR; c cur_typ; query_str VARCHAR2(200); inv_num NUMBER; inv_cust VARCHAR2(20); inv_amt NUMBER; BEGIN query_str :=

Oracle REGEXP_SUBSTR | Fetch string between two delimiters

懵懂的女人 提交于 2021-02-05 11:42:34
问题 I have a string Organization, INC..Truck/Equipment Failure |C . I want to fetch the sub-string after organization name (after two '..' characters) and before pipe character. So the output string should be - Truck/Equipment Failure . Can you please help. I have been trying forming regexp like this but doesn't seem working. select regexp_substr('Organization, INC..Truck/Equipment Failure |C', '[^.]+',1,2) from dual; 回答1: You may use this. SELECT REGEXP_SUBSTR ('Organization, INC..Truck

Retrieving the data from the table using the PL/SQL

孤者浪人 提交于 2021-02-05 11:37:49
问题 I want to retrieve all the information about each department from the DEPARTMENT table and display the information on the screen. Column name Data type Constraints DEPARTMENT_ID NUMBER(5) PK DEPARTMENT_NAME VARCHAR2(25) NOT NULL LOCATION_ID VARCHAR2(15) Sample Output: Department Details are : 1000, ADMIN, HQ-101 1010, DEVELOPMENT, CBE-103 1020, TESTING, CHN-102 I have a code which is as follows- set serveroutput on; declare v_dno department.department_id%type; v_dname department.department