首页 > 数据库 >Oracle与MySQL的差异和对比

Oracle与MySQL的差异和对比

时间:2024-03-25 23:23:08浏览次数:31  
标签:-------------------------------- -- Hands UNION MySQL Oracle 对比 SELECT

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

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

---------------------------------
--  主题:Oracle与MySQL的差异和对比
--    一、MySQL的基础特性
--    二、重要特性差异对比
--    三、性能对比和优化技巧
--------------------------------

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

--------------------------------
-- Hands-on场景环境准备@MySQL实例
--------------------------------
--Create db & user
CREATE DATABASE demodb;
CREATE USER 'alfred'@'localhost' IDENTIFIED BY 'alfred123';
GRANT ALL PRIVILEGES ON demodb.* TO 'alfred'@'localhost';
GRANT SELECT ON information_schema.* TO 'alfred'@'localhost';
FLUSH PRIVILEGES;


--Create tables
mysql -ualfred -palfred123 -Ddemodb


CREATE TABLE t (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50)
);


Insert into t(name) values ('Alfred'),('Mcdull');


commit;


select * from t;

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

--------------------------------
-- Hands-on场景1:模拟MDL等待
--------------------------------
--T1@ session1:TRX
begin;
select id from t;


--T2@ session2:DDL【被阻塞】
alter table t add age int;


--T3@ session3:Select【被阻塞】
select id from t;


--T4@ session1:TRX
commit;


--Check process & trx info
show processlist;
select * from information_schema.innodb_trx\G

Hands-on场景2:模拟死锁

--------------------------------
-- Hands-on场景2:模拟死锁
--------------------------------
--T1@ session1
begin;
update t set age=20 where id=1;


--T2@ session2
begin;
update t set age=18 where id=2;


--T3@ session1【被阻塞】
update t set age=18 where id=2;


--T4@ session2【数据库监测到死锁,事务回滚】
update t set age=20 where id=1;

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

--------------------------------
-- Hands-on场景3:DB读取最小单位
--------------------------------
--Oracle
show parameter db_block_size


--MySQL
show variables like 'innodb_page_size';

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

--------------------------------
-- Hands-on场景4:查看SQL索引使用情况
--------------------------------
INSERT INTO t (name, age)
SELECT 
    CONCAT('Name_', FLOOR(RAND() * 10000)),
    FLOOR(RAND() * 100)
FROM
    (SELECT 1 AS dummy UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) AS t1
    CROSS JOIN (SELECT 1 AS dummy UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) AS t2
    CROSS JOIN (SELECT 1 AS dummy UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) AS t3
    CROSS JOIN (SELECT 1 AS dummy UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) AS t4
    CROSS JOIN (SELECT 1 AS dummy UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) AS t5
    CROSS JOIN (SELECT 1 AS dummy UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) AS t6
    CROSS JOIN (SELECT 1 AS dummy UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) AS t7
LIMIT 10000;


explain select * from t where name='Alfred';


CREATE INDEX idx_name_age ON t(name, age);
CREATE INDEX idx_age ON t(age);
CREATE INDEX idx_name ON t(name);


explain select * from t where name='Alfred';


DROP INDEX idx_name_age ON t;


explain select * from t where name='Alfred';

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

--------------------------------------------------------
-- Hands-on场景5:MySQL默认存储引擎、binlog、redolog信息确认
--------------------------------------------------------
show engines;
SELECT @@default_storage_engine;


ps -ef|grep mysql 
cd [--datadir]
ls -lrth mysql-bin.*
ls -lrth ib_logfile*


SHOW VARIABLES LIKE 'innodb_log_file_size';
SHOW VARIABLES LIKE 'innodb_log_files_in_group';

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

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

标签:--------------------------------,--,Hands,UNION,MySQL,Oracle,对比,SELECT
From: https://www.cnblogs.com/jyzhao/p/18095652/oracle-yumysql-de-cha-yi-he-dui-bi

相关文章

  • 15. sysbench和MySQL IO
    MySQL的IO使用情况 iotopiotop-umysql#-u表示监控哪个user的进程,所以前提是你的mysql服务是用mysql用户启动的该命令只能看到MySQL的线程ID(ThreadID) performance_schema.threadsroot@mysqldb13:42:[performance_schema]>selectname,type,PROCESSLIST_ID,......
  • MySQL索引18连问,谁能顶住
    前言过完这个节,就要进入金银季,准备了18道MySQL索引题,一定用得上。作者:感谢每一个支持:github1.索引是什么索引是一种数据结构,用来帮助提升查询和检索数据速度。可以理解为一本书的目录,帮助定位数据位置。索引是一个文件,它要占用物理空间。2.MySQL索引有哪些......
  • MySQL 数据库的日志管理、备份与恢复
    一.数据库备份1.数据备份的重要性 备份的主要目的是灾难恢复。在生产环境中,数据的安全性至关重要。任何数据的丢失都可能产生严重的后果。造成数据丢失的原因:程序错误人为,操作错误,运算错误,磁盘故障灾难(如火灾、地震)和盗窃.容灾概念:容灾(DisasterRecovery,DR)......
  • docker-运行mysql服务
    环境说明linux系统版本:lsb_release-a  docker版本:docker-v  不同的操作系统以及软件版本,可能会遇到不一样的问题,一定要注意版本问题。 查看docker中mysql的版本,可以去官网,需要kx上网才能打开。https://hub.docker.com/ 最好是确认自己的服务器已经设置......
  • Flink: Function And Rich Function , 对比 Function ,Rich functions还提供了这些方法:o
    Flink:FunctionAndRichFunction,对比Function,Richfunctions还提供了这些方法:open、close、getRuntimeContext和setRuntimeContext序言    了解了Flink提供的算子,那我们就可以自定义算子了.自定义算子的目的是为了更加灵活的处理我们的业务数据,并将满足条件......
  • linux下的mysql常见用法
    linux下的mysql常见用法1.连接Mysql1.1连接到本机上的Mysql键入命令mysql-uroot-p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码.如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中......
  • 云计算 3月18号 (mysql安装及操作)
    一、Mysql1.1MySQL数据库介绍1.1.1什么是数据库DB?DB的全称是database,即数据库的意思。数据库实际上就是一个文件集合,是一个存储数据的仓库,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作;1.1.2什么是sql?SQL代表结构化查询语言(StructuredQ......
  • Git和SVN的对比
    差异安全性SVN:较差,定期备份,并且是整个SVN都得备份。Git:较高,每个开发者的本地就是一套完整版本库,记录着版本库的所有信息。 权限管理SVN:SVN的权限管理相当严格,可以按组、个人针对某个子目录的权限控制,每个目录下都会有个.SVN的隐藏文件。Git:Git没有严格的权限管理控制,只有账......
  • 使用Docker搭建MySQL数据库服务
    简介在现代应用程序开发中,使用数据库是必不可少的。而Docker作为一种流行的容器化解决方案,可以使数据库的部署和管理变得更加简单和灵活。本文将介绍如何使用Docker搭建MySQL数据库服务,让你在本地环境中快速部署一个MySQL实例。第一步:拉取MySQL镜像dockerpullmysql:5.7第......
  • 连接未来:电口模块与PON模块的全面对比
    在探索电口模块和PON模块的区别时,我们不仅要考虑它们的技术规格和应用场景,还要理解它们在现代网络通信中的独特地位。本文将详细分析电口模块的特点,并与PON模块进行对比,以突出电口模块在网络通信中的重要性。电口模块:局域网的高效连接者电口模块,也称为电气接口模块,是网络设备......