重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 11462|回复: 24
打印 上一主题 下一主题

通过oracle学mysql

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-6 10:21:51 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

对于熟悉oracle的人,在学习mysql的过程中,可以利用对oracle的了解,来学习mysql,应该可以起到一定的帮助作用。

 

那么,我将把我看到的两者的异同点进行分享,这个是不断积累的过程,可能前后会有不同的认识,希望能帮助我们自己更快的学习。

 

1.不同点

   mysql主要面向分布式环境

   oracle更趋向于集中

 

   oracle 是多进程

   mysql 是单进程,多线程

 

2.对应的参数

   最大连接数

     oracle :processes  默认:150

     mysql:max_connections   默认:151

    

 

   内存分配

     oracle:sga_target

     mysql:innodb_buffer_pool_size

    

  

3.对应的功能

   分布式:

    oracle: dblink

    mysql:Federated MySQL storage engine

 

后面续。。。

 

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

25#
 楼主| 发表于 2018-7-14 10:08:16 | 只看该作者
19.监控
   oracle: oem
   mysql:monitor
回复 支持 反对

使用道具 举报

24#
 楼主| 发表于 2015-5-3 16:30:17 | 只看该作者

18.查看执行计划:

    比如下面这条sql语句:

    SELECT COUNT(*) as 'Cities', SUM(Country.Population) AS Population, Continent
 FROM Country JOIN City
 ON CountryCode = Code
 GROUP BY Continent
 ORDER BY Population;

 

 

    oracle:

               可以使用

             explain plan

             for

           SELECT COUNT(*) as 'Cities', SUM(Country.Population) AS Population, Continent
             FROM Country JOIN City
 ON CountryCode = Code
 GROUP BY Continent
 ORDER BY Population;

             然后,使用 select * from table(dbms_xplan.display);进行查看

 

   mysql:

           explain

             SELECT COUNT(*) as 'Cities', SUM(Country.Population) AS Population, Continent
             FROM Country JOIN City
 ON CountryCode = Code
 GROUP BY Continent
 ORDER BY Population;

           显示:

               +----+-------------+---------+------+---------------+-------------+---------+--------------------+------+---------------------------------+
| id | select_type | table   | type | possible_keys | key         | key_len | ref                | rows | Extra                           |
+----+-------------+---------+------+---------------+-------------+---------+--------------------+------+---------------------------------+
|  1 | SIMPLE      | Country | ALL  | PRIMARY       | NULL        | NULL    | NULL               |  239 | Using temporary; Using filesort |
|  1 | SIMPLE      | City    | ref  | CountryCode   | CountryCode | 3       | world.Country.Code |    9 | Using index                     |
+----+-------------+---------+------+---------------+-------------+---------+--------------------+------+---------------------------------+

 

           

回复 支持 反对

使用道具 举报

23#
 楼主| 发表于 2015-5-3 15:30:53 | 只看该作者

17.设置日志文件大小

     oracle: 

                创建联机日志文件时,指定大小

                alter database add logfile group xxx ('/home/oracle/redo01.dbf') size 500m;

 

     mysql :

                修改变量来实现:

                innodb_log_file_size=500m

 

 

回复 支持 反对

使用道具 举报

22#
发表于 2015-4-22 10:57:53 | 只看该作者

本来Oracle就具代表性,所以有如此情况!学习的话,还是先学Oracle感觉更有好处!当然直接学MySQL的话要简单些,Oracle难度要大些。

回复 支持 反对

使用道具 举报

21#
 楼主| 发表于 2015-4-22 10:55:19 | 只看该作者

16.移动数据

    oracle:

             外部表,sqlloader,expdp\exp /impdp/imp

 

    mysql:

             select into outfile / load data [local] infile 对应 sqlloader

            

             下面是例子:

             

select * into outfile '/u01/test/emp2.sql'
   fields terminated by ','
from emp;

[root@sztech1 test]# more emp2.sql
100,smitty,5000,2015-04-05
200,\N,\N,\N
300,\N,\N,\N

 

mysql> desc emp_bak
    -> ;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| empid     | int(11)     | YES  |     | NULL    |       |
| last_name | varchar(20) | YES  |     | NULL    |       |
| salary    | double      | YES  |     | NULL    |       |
| hire_date | date        | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)


load data infile '/u01/test/emp2.sql'
 into table emp_bak
 fields terminated by ',' ;

         

   

            外部表好像没有看到

            mysqldump 对应 oracle的 exp/imp

            

     

[此贴子已经被作者于2015-04-22 22:54:13编辑过]
回复 支持 反对

使用道具 举报

20#
 楼主| 发表于 2015-4-12 13:50:40 | 只看该作者

15.日期字段默认值

 

    oracle:hire_date date default sysdate; 

 

    mysql :

              默认值不支持函数,对于 date类型,不能使用 date default now(),

              如果需要,可以使用触发器来实现,或者使用 timestamp类型 ,默认为 current_timestamp;

              hire_date timestamp;

 

               比如下面的例子:

 

               create table test(last_name varchar(20),hire_date timestamp );

               insert into test (last_name) values('zq');

              

               mysql> select * from test;
+-----------+---------------------+
| last_name | hire_date           |
+-----------+---------------------+
| zq        | 2015-04-12 13:45:34 |
+-----------+---------------------+
1 row in set (0.00 sec)

              

回复 支持 反对

使用道具 举报

19#
 楼主| 发表于 2015-4-12 10:46:47 | 只看该作者

14.for loop

    oracle:支持

  

    mysql:不支持for loop

    在编程中,使用到循环,只支持:loop ...  end loop,while ... do,repeat while ... end repeat;等。 

回复 支持 反对

使用道具 举报

18#
 楼主| 发表于 2015-4-12 10:44:01 | 只看该作者

13.匿名块

    oracle:支持

 

    mysql:不支持

             变通办法,写一个存储过程来实现。

             下面为一个往表插入50000条记录的例子 :

 

delimiter //

             

create procedure p_insert(p_upper int)
begin
   declare i int default 1;
     while i < p_upper do
     insert into orders_range(id) values(i);
     set i=i+1;
     end while;
end;

//

call p_insert(50000);

//

 

 

 

            

[此贴子已经被作者于2015-04-12 10:52:34编辑过]
回复 支持 反对

使用道具 举报

17#
 楼主| 发表于 2015-4-11 12:08:45 | 只看该作者

13.数据字典

   oracle:

           一般通过 dictionary 来查询,比如要查有哪些数据字典

            select table_name  from dict;

 

   mysql:

          查询 information_schema数据库中的表

          比如:

          use information_schema;

          show tables;

 

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-28 18:25 , Processed in 0.120774 second(s), 23 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表