日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 导入百万级数据 几种 java_Java 修行第034天--执行计划及其使用--Oracle数据导入导出--第三章MySQL使用...

發布時間:2023/12/2 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 导入百万级数据 几种 java_Java 修行第034天--执行计划及其使用--Oracle数据导入导出--第三章MySQL使用... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

執行計劃中牢記幾句話:

-- 盡量避免是*代替所有列,編寫查詢語句時使用具體列名代替*,可以防止全表掃描
-- 盡可能少的使用like關鍵字進行模糊查詢
-- 建立適當的索引可以提高查詢效率

十三. 執行計劃--通過PL/SQL Developer查看查詢的

1 執行計劃是一條查詢語句在Oracle中的執行過程或訪問路徑的描述.

2 配置執行計劃需要顯示的項

3 執行計劃的常用列字段解釋

基數(Cardinality):Oracle 估計的當前操作的返回結果集行數

字節(Bytes):執行該步驟后返回的字節數

耗費(COST)、CPU 耗費:Oracle 估計的該步驟的執行成本,用于說明 SQL 執行的代價,理論上越小越好(該值可能與實際有出入)

時間(Time):Oracle 估計的當前操作所需的時間

4 使用執行計劃

通過工具啟動執行計劃。選中需要查看執行計劃的查詢語句,在工具欄中選擇Tools--->Explain Plan或者是選擇需要查看執行計劃的查詢語句按 F5。

5 查看執行計劃

5.1執行順序

縮進最多的最先執行;(縮進相同時,最上面的最先執行)。

5.2表訪問的幾種常見方式(非全部):

(1) TABLE ACCESS FULL(全表掃描): --建議數據小的表使用

掃描所有表,并檢查每一行是否滿足where限制條件

(2) TABLE ACCESS BY INDEX ROWID(通過 ROWID 的表存取)

(****注意:rowid在這里也是偽列(和rownum一樣) ,是由 Oracle 自動加在表中每行最后的一列偽列,是在該行生命周期內不會發生改變的列.)

行的 ROWID 指出了該行所在的數據文件、數據塊以及行在該塊中的位置,所以通過ROWID 可以快速定位到目標數據上,這也是 Oracle 中存取單行數據最快的方法

(3) TABLE ACCESS BY INDEX SCAN(索引掃描)

在索引塊中,既存儲每個索引的鍵值,也存儲具有該鍵值的行的 ROWID

索引掃描分為兩步:

1 掃描索引得到對應的 ROWID。

2 通過 ROWID 定位到具體的行讀取數據。

索引掃描常用五種類型:

INDEX UNIQUE SCAN(索引唯一掃描)

針對唯一性索引(UNIQUE INDEX)的掃描,每次至多只返回一條記錄;

表中某字段存在 UNIQUE、PRIMARY KEY 約束時,Oracle 常實現唯一性掃描;

INDEX RANGE SCAN(索引范圍掃描)

使用一個索引存取多行數據;

發生索引范圍掃描的三種情況:

1 在唯一索引列上使用了范圍操作符(如:> < <> >= <= between);

2 在組合索引上,只使用部分列進行查詢(查詢時必須包含前導列,否則會走全表掃描);

3 對非唯一索引列上進行的任何查詢;

INDEX FULL SCAN(索引全掃描)

進行全索引掃描時,查詢出的數據都必須從索引中可以直接得到;

INDEX FAST FULL SCAN(索引快速掃描)

掃描索引中的所有的數據塊,與 INDEX FULL SCAN 類似,但是一個顯著的區別是它不對查詢出的數據進行排序(即數據不是以排序順序被返回);

INDEX SKIP SCAN(索引跳躍掃描)

表有一個復合索引,且在查詢時有除了前導列(索引中第一列)外的其他列作為條件;

6 Oracle的優化器

Oracle 的優化器種類

RBO(Rule-Based Optimization) 基于規則的優化器 --已經被拋棄,過時了

CBO(Cost-Based Optimization) 基于代價的優化器

CBO比RBO更加合理可靠,是通過計算各種可能的執行計劃的“代價”,即 COST,從中選用 COST 最低的執行方案作為實際運行方案

7 執行計劃的使用

7.1單表中使用

7.1.1分析查詢表中的所有數據

7.1.1.1 示例

查詢 employees 表中的所有數據

7.1.2分析主鍵作為條件的查詢

7.1.2.1 示例

查詢 employees 表中 employees_id 為 100 的雇員

7.1.3分析非主鍵列作為查詢條件

7.1.3.1 示例

查詢雇員名字為 Tarloy 的雇員

7.1.4分析 like 條件

7.1.4.1 示例

查詢雇員名字中含有 a 的雇員

7.1.5分析非唯一性索引列作為條件的查詢

7.1.5.1 示例一

將 last_name 創建索引

create index emp_name on employees(last_name);

7.1.5.2 示例二

查詢雇員名字為 Taylor 的雇員。

7.1.6分析非唯一性索引中=、>、< 、<>條件

7.1.6.1 示例一

對雇員薪水列做=、>、<、<>條件判斷。

7.1.6.2 示例二

對薪水創建索引,使用薪水列做=、>、<、<>條件判斷。

7.2多表

7.2.1內連接

7.2.1.1 示例一

使用等值連接,查詢所有部門以及所有部門下的雇員。

7.2.1.2 示例二

使用子查詢,查詢所有部門以及所有部門下的雇員(代價值為3,性能提升一般)

7.2.2外連接

7.2.2.1 示例一

查詢所有雇員與雇員的部門名稱,包含那些沒有部門的雇員。

7.2.2.2 示例二

查詢所有部門以及雇員,包含哪些沒有雇員的部門。

十四、 Oracle 的數據導入與導出

做數據備份--導出

做數據恢復時--導入

數據遷移--導入導出

1 數據庫導入導出需要注意

1).目標數據庫要與源數據庫有著名稱相同的表空間。

2).目標數據在進行導入時,用戶名盡量相同(這樣保證用戶的權限級別相同)。

3).目標數據庫每次在進行數據導入前,應做好數據備份。

4).目標數據導入前,弄清楚是數據覆蓋(替換),還是僅插入新數據或替換部分數據表。

5).確定目標數據庫磁盤空間是否足夠容納新數據,是否需要擴充表空間。

6).導入導出時注意字符集是否相同,一般 Oracle 數據庫的字符集只有一個,并且固定,一般不改變。

7).確定操作者的賬號權限。

2 導出數據格式:

Dmp 格式:.dmp 是二進制文件,可跨平臺,還能包含權限,效率好。

Sql 格式:.sql 格式的文件,可以文本編輯器查看,通用性比較好,效率不如第一種,適合小數據量導入導出。尤其注意的是表中不能有大字段 (blob,clob,long),如果有,會報錯。

Pde 格式:.pde 格式的文件,.pde 為 PL/SQL Developer 自有的文件格式,只能用 PL/SQLDeveloper 工具導入導出,不能用文本編輯器查看。

3 傳統方式 exp(導出)和(imp)導入:

3.1命令執行方式

該命令需要在操作系統的命令窗口執行,而非 sql/plus

3.2命令格式

exp|imp 用 戶 名 / 密 碼 @ 連 接 地 址 : 端 口 / 服 務 名 file= 路 徑 / 文 件 名 .dmp full=y|tabels(tablename,tablename...)|owner(username1,username2,username3)

exp:導出命令,導出時必寫。

imp:導入命令,導入時必寫,每次操作,二者只能選擇一個執行。

username:導出數據的用戶名,必寫;

password:導出數據的密碼,必寫;

@:地址符號,必寫;

SERVICENAME:Oracle 的服務名,必寫;---比如:orcl就是服務名

1521:端口號,1521 是默認的可以不寫,非默認要寫;

file="文件名.dmp" : 文件存放路徑地址,必寫;

full=y :表示全庫導出。可以不寫,則默認為 no,則只導出用戶下的對象;

tables:表示只導出哪些表;

owner:導出該用戶下對象;

full|tables|owner:只能使用一種(不能同時出現 );

3.3導出數據

exp 用戶名/密碼@oracle 的連接地址:端口/需要導出的服務名 file=路徑/文件名.dmp

3.3.1示例

將 HR 用戶下的對象導出。

exp hr/oracle@localhost:1521/orcl file=d:/1.dmp

3.4導入數據

imp 用戶名/密碼@oracle 的連接地址:端口/需要導出的服務名 file=路徑/文件名.dmp

3.4.1示例

將導出的 dmp 文件導入到數據庫中。

imp hr/oracle@localhost:1521/orcl file=d:/1.dmp

4 使用 PL/SQL Developer 實現數據的導入與導出

4.1導出與導入表對象

有 DMP, SQL, PDE 三種格式,他們的導出導入方法都是大同小異

總體方法如下:

1. 在PL/SQLDeveloper 的tools 工具欄中,有兩個選項 Export Tables/Inport Tables導出/導入表

2. 點擊之后會出現所有表格,選擇自己想要導出的表格,然后在下面欄中會有Oracle Eeport(dmp格式)和SQL Inserts(sql格式),選擇之后

3. 再在下 面的 Output file /Input選擇自己想要導出的位置,再點擊旁邊 Export/Inport即可

4.2數據中其他對象的導入與導出---視圖,索引,序列

注意:

當使用Export User Objects 導出到結構都是SQL結構多種不同類型的對象時,表中導出的結果只是表結構,并不會包含任何數據.要想導出包含表數據,那就只能使用Export導出導入還是使用Inport 中的SQL insert 方法

在用戶中刪除導出的內容之后,也可直接將導出的sql內容用筆記本打開之后賦值,再在新打開的command Windows 中粘貼運行,也同樣可以導入到處的內容

第三章 MySQL 數據庫的使用

一、 MySQL 簡介

1 什么是 MySQL

MySQL 是一個關系型數據庫管理系統,關系型數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。

2 MySQL 特點

MySQL 是開源的,所以你不需要支付額外的費用。

MySQL 支持大型系統的數據庫。可以處理擁有上千萬條記錄的大型數據庫。

MySQL 使用標準的 SQL 數據語言形式。

二、 MySQL 的安裝與卸載

安裝步驟:

license Agreement-->Next-->Sever Only Next-->Excute-->Tnstallation Next-->Product Configuration Next-->Type and Networking Next-->設密 碼 Next-->Windows Service Next-->Plugins and Extensions Next-->Apply Server Configuration Execute-->Finish

卸載步驟

1停止 MySQL 服務

2卸載 mysql server

3MySQL 安裝目錄

4刪除注冊表中信息

5刪除 MySQL 數據庫目錄

6刪除服務中的 MySQL

7重啟系統

三、 MySQL 的客戶端工具

1 MySQL 自帶的客戶端端工具

2 第三方客戶端工具 Navicat

四、 MySQL 與 Oracle 的區別

1 實例區別

MySQL 是輕量型數據庫,開源免費。Oracle 是收費的而且價格非常高。

MySQL 一個實例可以操作多個庫,而 Oracle 一個實例只能對應一個庫。

MySQL 安裝完后 300M 而 Oracle 有 3G 左右。

2 操作區別

主鍵: MySQL 一般使用自動增長類型,而 Oracle 則需要使用序列對象。

單引號的處理: MySQL 里可以用雙引號包起字符串,ORACLE 里只可以用單引號包

起字符串。

分頁的 SQL 語句: MYSQL 用 LIMIT,而 Oracle 需要使用內建視圖和 rownum 偽列。事務處理:MySQL 默認是自動提交,而 Oracle 默認不自動提交,需要用戶 CTL 語言進行事務提交。

這里個人見解: MySQL和Oracle對于數據物理隔離機制上的區別

Oracle裝好后會有一個實例和一個庫 庫中可以創建多個不同的表空間,每個表空間對應一個數據文件.可以創建不同的用戶分配不同的表空間,再通過表空間實現物理隔離.所以在Oracle中有一個庫就夠了.

MySQL是一個實例可以對對應多個不同的庫 在MySQL中沒有表空間這個概念我們可以創建不同的庫,每個庫用不同的用戶來操作.庫和庫之間放的是不同的數據文件,所以MySQL是通過不同的庫之間實現物理隔離.所以MySQL要先創建庫

五 操作 MySQL

1 創建數據庫:

CREATE DATABASE 數據庫名 DEFAULT CHARACTER SET 字符編碼;

1.1 示例

創建一個 test 的數據庫,并查看該數據庫,以及該數據庫的編碼。

創建數據庫:

create database test default character set utf8;

查看數據庫:

show databases;

查看數據庫編碼:

select schema_name,default_character_set_name from information_schema.schemata where schema_name = 'test';

刪除數據庫:

Drop database 數據庫名稱

2 選擇數據庫

需要在哪個庫中創建表需要先選擇該數據庫。

Use 需要選擇的庫的名稱。

2.1示例一

創建一個名稱為 zzsxt 的數據庫,編碼為 utf8。

create database zzsxt default character set = utf8;

2.2示例二

選擇該數據庫

use bjsxt;

3 MySQL 中的數據類型

1)數值類型

數值類型中的長度 m 是指顯示長度,并不表示存儲長度,只有字段指定 zerofill 時有用

例如:int(3),如果實際值是 2,如果列指定了 zerofill,查詢結果就是 002,左邊用 0 來填充

2)浮點型

3)字符串類型

4)日期類型

二進制數據(BLOB)

1)BLOB 和 TEXT 存儲方式不同,TEXT 以文本方式存儲,英文存儲區分大小寫,而 Blob

是以二進制方式存儲,不分大小寫。

2)BLOB 存儲的數據只能整體讀出。

3)TEXT 可以指定字符集,BLOB 不用指定字符集。

4 創建表與刪除表

4.1創建表

4.1.1通過 DDL 語句創建表

4.1.1.1 示例

創建一個 employees 表包含雇員 ID,雇員名字,雇員薪水。

create table employees(employee_id int,last_name varchar(30),salary float(8,2));

查看已創建的表

Show tables;

5 修改表

5.1使用 DDL 語句修改表名

ALTER TABLE 舊表名 RENAME 新表名

5.1.1示例一

創建一個 employees 表包含雇員 ID,雇員名字,雇員薪水。

create table employees(employee_id int,last_name varchar(30),salary float(8,2));

5.1.2示例二

將 employees 表名修改為 emp。

alter table employees rename emp;

5.2使用 DDL 修改列名

ALTER TABLE 表名 CHANGE COLUMN 舊列名 新列名 類型

ALTER TABLE 舊表名 RENAME 新表名

5.2.1示例

將 emp 表中的 last_name 修改為 name

alter table emp change column last_name name varchar(30);

5.3使用 DDL 語句修改列類型

ALTER TABLE 表名 MODIFY 列名 新類型

5.3.1示例

將 emp 表中的 name 的長度指定為 40

alter table emp modify name varchar(40);

5.4使用 DDL 語句添加列

ALTER TABLE 表名 ADD COLUMN 新列名 類型

5.4.1示例

在 emp 表中添加一個新的列為 commission_pct

alter table emp add column commission_pct float(4,2);

5.5使用 DDL 語句刪除列

ALTER TABLE 表名 DROP COLUMN 列名

5.5.1示例

刪除 emp 表中的 commission_pct

alter table emp drop column commission_pct;

總結

以上是生活随笔為你收集整理的mysql 导入百万级数据 几种 java_Java 修行第034天--执行计划及其使用--Oracle数据导入导出--第三章MySQL使用...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。