Oracle与MySQL的差异和对比:配套hands-on参考脚本。

方便客户针对培训课件内容进行动手实践,加强理解。

  1. ---------------------------------
  2. -- 主题:OracleMySQL的差异和对比
  3. -- 一、MySQL的基础特性
  4. -- 二、重要特性差异对比
  5. -- 三、性能对比和优化技巧
  6. --------------------------------

Hands-on场景环境准备@MySQL实例

  1. --------------------------------
  2. -- Hands-on场景环境准备@MySQL实例
  3. --------------------------------
  4. --Create db & user
  5. CREATE DATABASE demodb;
  6. CREATE USER 'alfred'@'localhost' IDENTIFIED BY 'alfred123';
  7. GRANT ALL PRIVILEGES ON demodb.* TO 'alfred'@'localhost';
  8. GRANT SELECT ON information_schema.* TO 'alfred'@'localhost';
  9. FLUSH PRIVILEGES;
  10. --Create tables
  11. mysql -ualfred -palfred123 -Ddemodb
  12. CREATE TABLE t (
  13. id INT AUTO_INCREMENT PRIMARY KEY,
  14. name VARCHAR(50)
  15. );
  16. Insert into t(name) values ('Alfred'),('Mcdull');
  17. commit;
  18. select * from t;

Hands-on场景1:模拟MDL等待

  1. --------------------------------
  2. -- Hands-on场景1:模拟MDL等待
  3. --------------------------------
  4. --T1@ session1:TRX
  5. begin;
  6. select id from t;
  7. --T2@ session2:DDL【被阻塞】
  8. alter table t add age int;
  9. --T3@ session3:Select【被阻塞】
  10. select id from t;
  11. --T4@ session1:TRX
  12. commit;
  13. --Check process & trx info
  14. show processlist;
  15. select * from information_schema.innodb_trx\G

Hands-on场景2:模拟死锁

  1. --------------------------------
  2. -- Hands-on场景2:模拟死锁
  3. --------------------------------
  4. --T1@ session1
  5. begin;
  6. update t set age=20 where id=1;
  7. --T2@ session2
  8. begin;
  9. update t set age=18 where id=2;
  10. --T3@ session1【被阻塞】
  11. update t set age=18 where id=2;
  12. --T4@ session2【数据库监测到死锁,事务回滚】
  13. update t set age=20 where id=1;

Hands-on场景3:DB读取最小单位

  1. --------------------------------
  2. -- Hands-on场景3DB读取最小单位
  3. --------------------------------
  4. --Oracle
  5. show parameter db_block_size
  6. --MySQL
  7. show variables like 'innodb_page_size';

Hands-on场景4:查看SQL索引使用情况

  1. --------------------------------
  2. -- Hands-on场景4:查看SQL索引使用情况
  3. --------------------------------
  4. INSERT INTO t (name, age)
  5. SELECT
  6. CONCAT('Name_', FLOOR(RAND() * 10000)),
  7. FLOOR(RAND() * 100)
  8. FROM
  9. (SELECT 1 AS dummy UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) AS t1
  10. CROSS JOIN (SELECT 1 AS dummy UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) AS t2
  11. CROSS JOIN (SELECT 1 AS dummy UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) AS t3
  12. CROSS JOIN (SELECT 1 AS dummy UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) AS t4
  13. CROSS JOIN (SELECT 1 AS dummy UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) AS t5
  14. CROSS JOIN (SELECT 1 AS dummy UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) AS t6
  15. CROSS JOIN (SELECT 1 AS dummy UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) AS t7
  16. LIMIT 10000;
  17. explain select * from t where name='Alfred';
  18. CREATE INDEX idx_name_age ON t(name, age);
  19. CREATE INDEX idx_age ON t(age);
  20. CREATE INDEX idx_name ON t(name);
  21. explain select * from t where name='Alfred';
  22. DROP INDEX idx_name_age ON t;
  23. explain select * from t where name='Alfred';

Hands-on场景5:MySQL默认存储引擎、binlog、redolog信息确认

  1. --------------------------------------------------------
  2. -- Hands-on场景5MySQL默认存储引擎、binlogredolog信息确认
  3. --------------------------------------------------------
  4. show engines;
  5. SELECT @@default_storage_engine;
  6. ps -ef|grep mysql
  7. cd [--datadir]
  8. ls -lrth mysql-bin.*
  9. ls -lrth ib_logfile*
  10. SHOW VARIABLES LIKE 'innodb_log_file_size';
  11. SHOW VARIABLES LIKE 'innodb_log_files_in_group';

Hands-on场景6:查看MySQL业务表的详细状态信息

  1. ------------------------------------------
  2. -- Hands-on场景6:查看MySQL业务表的详细状态信息
  3. ------------------------------------------
  4. show table status like 't'\G
  5. show index from t;

Oracle与MySQL的差异和对比的更多相关文章

  1. Oracle与MySQL的区别对比

    本文对数据库Oracle与MySQL进行了区别对比,其中从并发性.一致性.事务.数据持久性等十三方面进行了对比. 本文摘自 51cto 一.并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源 ...

  2. oracle和mysql几点差异对比

    Oracle与mysql差异性总结 之前有个项目是用oracle数据库进行开发,需要把数据库改成mysql,遇到了一些地方需要注意的,就简单记了下来. 备注: 再把oracle转成mysql的时候,表 ...

  3. MySQL与Oracle差异函数对比

    ORACLE:select round(1.23456,4) value from dual MYSQL:select round(1.23456,4) value 2 abs(-1) abs(-1) ...

  4. Oracle和MySQL的高可用方案对比【转】

    关于Oracle和MySQL的高可用方案,其实一直想要总结了,就会分为几个系列来简单说说.通过这样的对比,会对两种数据库架构设计上的细节差异有一个基本的认识.Oracle有一套很成熟的解决方案.用我在 ...

  5. 【转】SQL Server、Oracle、MySQL和Vertica数据库常用函数对比

    SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 1. 绝对值 S:select abs(-1) valu ...

  6. Oracle和MySQL的对比

    一.概述 1.1 Oracle 1.1.1 优点 开放性:Oracle 能所有主流平台上运行(包括 windows)完全支持所有工业标准采用完全开放策略使客户选择适合解决方案对开发商全力支持: 可伸缩 ...

  7. Vertica的这些事(二)——SQL-Server、Oracle、MySQL和Vertica数据库常用函数对比

    SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 绝对值 S:select abs(-1) value O ...

  8. oracle和mysql批量合并对比

    orm框架采用mybatis,本博客介绍一下批量合并merge用oracle和mysql来做的区别, oracle merge合并更新函数的详细介绍可以参考我以前的博客:https://blog.cs ...

  9. Oracle和Mysql获取uuid的方法对比

    场景:orm框架用mybatis,需要往数据库新增一条数据,用Oracle和mysql数据库分别需要怎么实现? mysql方法,用mysql提供的uuid函数 <insert id=" ...

  10. Mysql 和 Postgresql(PGSQL) 对比

    Mysql 和 Postgresql(PGSQL) 对比 转载自:http://www.oschina.net/question/96003_13994 PostgreSQL与MySQL比较 MySQ ...

随机推荐

  1. Rollup的基本使用

    Rollup的基本使用 rollup.js是一个模块打包工具,可以使项目从一个入口文件开始,将所有使用到的模块文件都打包到一个最终的发布文件中,Rollup极其适合构建一个工具库,Vue.js源码就是 ...

  2. Java设计模式-模板模式Template

    介绍 模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),z 在一个抽象类公开定义了执行.它的方法的模板.它的子类可以按需要重写方法实现, ...

  3. C. Sum of Substrings题解

    C. Sum of Substrings 题目大概意思,给你一个01串,求和最小,其中和是该串所有相邻字符所组成的十进制数的和. 如:0110, sum = 01 + 11 + 10 = 22. 通过 ...

  4. 50从零开始用Rust编写nginx,原来TLS证书还可以这么申请

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 负载均衡, 静态文件服务器,websocket代理,四层TCP/UDP转发,内网穿透等,会将实 ...

  5. go语言range语句中的值的坑

    在range语句中生成的数据的值是真实集合元素的副本,它们不是原有元素的引用.这意味着更新这些值将不会 修改原来的数据,同时也意味着使用这些值的地址将不会得到原有数据的指针. package main ...

  6. 【Azure 存储服务】Azure Storage Account Queue中因数据格式无法处理而在一个小时内不在可见的问题

    问题描述 在从Storage Account 队列中获取数据(Queue),在门户中,明显看见有数据,但是通过消费端代码去获取的时候,就是无法获取到有效数据的情况.获取消息的代码如下: 问题解答 经过 ...

  7. 【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题

    问题描述 将 JS项目打包为静态文件后,通过 FTP 上传到 App Service For Linux 的 /home/site/wwwroot文件夹中.但打开App Service URL 后依旧 ...

  8. 【Azure 环境】当本地网络通过ER专线与Azure云上多个虚拟网络打通,如何通过特定的网络策略来限制本地部分网段访问云上虚拟机22端口?

    问题描述 当本地网络通过ER专线与Azure云上多个虚拟网络打通,如何通过特定的网络策略来限制本地部分网段访问云上虚拟机22端口? 问题回答 根据文档调研,在ER线路服务的层面,是无法做网络策略来限制 ...

  9. Langchain 介绍与入门

    官方介绍 LangChain 是一个利用LLM开发应用程序的框架.它让应用程序具备: 上下文感知能力:将LLM连接到上下文源(提示说明.少量示例.用以形成其响应的内容等) 推理:依靠LLM进行推理(例 ...

  10. Java 常用类 于 StringBuffer 和 StringBuilder的使用 + String三者的异同

    1 package com.bytezero.stringclass; 2 3 import org.junit.Test; 4 5 /** 6 * 关于 StringBuffer 和 StringB ...