mysql的索引事務和存儲引擎

一、索引

1、索引

索引的概念 :索引是一個排序的列表,在列表當中存儲索引的值以及索引值對應數據所在的物理行。

索引的引用:

使用索引之后,就不需要掃描全表來定位某行的數據。

加快數據庫的查詢速度。

索引可以是表中的一列,也可以是多個列。

索引優點:

1、設置了索引之后,數據庫可以利用索引快速定位,大大提高查詢速度,這也是索引的主要原因。

2、尤其是表的數據很大,以及設計多個表查詢時,索引可以大大的提高查詢速度。

3、建立索引,不僅能夠提高查詢速度,在恢復數據庫的數據時,也能提高性能。

4、可以加快表與表之間連接查詢的速度。

索引缺點:

1、創建的索引也需要占用額外的磁盤空間,INNODB存儲引擎表數據文件和索引文件在一塊,一體的,相對來說占是空間小一點。

2、更新一個包含索引的表比沒有索引的表需要花費更多的時間,表需要更新,索引也要更新,所以速度要慢很多。

理想的做法:經常被作為搜索條件的列上面創建索引。

2、創建索引的原則和依據

1、表的主鍵和外鍵必須有索引,主鍵是唯一的,外鍵是關聯主表的,查詢時可以快速定位。

2、一張表有超過300行的數據,應該要創建索引。

3、經常與其他表進行連接的表,在連接字段上創建索引。

4、更新太頻繁的字段不適合創建索引,

5、經常作為where語句的條件列,應該創建索引,

6、經常使用group by 和 order by的字段上要創立索引。

7、選擇一個性能高的字段作為索引,字段的值不同的越多越好。

8、索引應該建立在小字段上,字符串的長度比較小的字段,對于長文本字段,超長的字段不適合建立索引。

3、索引的類型

b-tree (b-樹索引)索引:絕大部分的數據都是使用B-樹索引。

索引的左邊的列開始,到右按順序進行排列。

哈希索引:索引對應的hash值的方法獲取表的記錄行。速度比較慢,贏的方法少。

4、創建索引

1、主鍵索引:主鍵即索引

主鍵索引是一種特殊的唯一索引。

2、普通索引

在創建表的時候創建普通索引

create table member (
id int(10),
name varchar(10),
cardid int(18),
phone int(11),
address varchar(50),
remark text,
index name_index (name) #創建普通索引
);

3、唯一索引(unique index )

創建之后修改,可以用key 的方式創建 也可以使用索引方式創建

格式

create unique index 索引名 on 表名();
ALTER TABLE member add unique index phone_index (phone);
#或者
CREATE UNIQUE index cardid_index on member(cardid);

4、組合索引

組合索引:一次性給多個列創建索引,形成一個組合。

適應于被經常搜索的列

alter table member add constraint 索引名 unique (字段1,字段1,字段1);
例如
ALTER TABLE member add CONSTRAINT uc_name_address UNIQUE (name,address);

查看索引,組合索引共用一個索引名稱

使用組合索引

select * from member where name= ... and address......;

5、 查看索引

show index from 表名;

6、刪除索引

?刪除索引要先查看,根據索引名(Key_name)進行刪除

drop index 索引名稱 on 表名;
或者
alter TABLE 表名 drop index 索引名稱;

7、?全文索引

?全文索引:適用于模糊查詢,檢索大文本使用的

create fulltext index remark_index on member (remark);

數據內容

使用索引

select * from member where match(remark) against ('vip')

在創建的時候添加多個索引

create table sysvip(
id int(5) PRIMARY KEY,#主鍵索引
name varchar(10),
cardid int(11),
address varchar(50),
times timestamp,
remark text,
index name_index (name),#普通索引
unique index cardid_index (cardid), #唯一索引
FULLTEXT index remark_index (remark)#全文索引
);

查看

?

二、?mysql的事務

1、事務

事務是一個機制,一個操作序列。一組或者一條數據庫的操作命令。

把所有的命令作為一個整體向系統提交或者撤銷的操作。要么都成功要么都失敗。

數據的一致性,數據的一致性非常重要

事務是一個不可分割的工作邏輯單元,在數據庫上執行并發操作時,事務是最小的控制單元

數據庫通過事務的控制和事務的整體性保證數據的一致性。

2、事務的特點

ACID在數據庫的管理系統中,事務的特性有ACID這四種:

A:ATIMICITY 原子性:事務的最小控制單位,不可分割,要么都成功,要么都失敗

C:CONSISTENCY 一致性:事務開始之前和事務結束之后數據庫的完整性沒有被破壞

開始的時候數據是一致的,結束的時候數據也是一致的

在事務進行的時候,數據可以處于不一致的狀態,但是一旦結束,數據必須回到一致性。

I:ISOLATION 隔離性:在并發環境中,不同的事務同時操作相同的數據時,每個事務都有自己完整的數據空間。對數據的修改所發生的并發事務是隔離的,每個事務之間都是獨立的。

一個用戶的事務不被其他事務所干擾。

3、數據庫的隔離性

有以下四種:

1、未提交讀 read uncommitted RU

允許臟讀,一個事務可以看到其他事務未提交的修改

2、提交讀,read committed RC

一個事務只能看到其他事務已經提交的修改,未提交的修改不可見,防止臟讀

oracle和sql sever

3、可重復讀,repeatable read RR 一個事務在執行中,執行兩次相同的select語句,得到的結果都想同的mysql的默認隔離選項。防止臟讀和不可重復讀。

4、串行讀,相當于鎖表,完全串行化的讀,一個事務在使用,其他事務的讀寫都會阻塞。

臟讀:

查看當前會話的隔離級別

show global/session variables like '%isolation%'

修改隔離級別

set global transaction isolation level Read Uncommitted;set session transaction isolation level Read Uncommitted;

不可重復讀:在一個事務內,多次讀同一數據,一個事務沒有結束,另外一個事務也訪問該數據。

其中一個事務連續兩次查詢發現結果不一致。另外一個事務在對著這個進行修改。兩次看到的數據不一致。

set global transaction isolation level Read committed;set session transaction isolation level Read committed;

終端也要同時進行操作一樣的操作。

幻讀:一個事務對一個表的數據進行了修改,另一個表也修改了表中數據,前一個事務會返現修改的結果不正確類似于出現了幻覺。

不可更新:兩邊同時對數據進行修改,但是一方先提交,一方后提交,后提交會覆蓋先提交的。

D:DURABILITY 持久性:一旦寫入數據庫,數據不可更改。

4、事務控制語句

begin start transaction:開啟一個事務

commit :提交事務

rollback :回滾

設置回滾點:savepoint 名稱

回滾到指定的點:rollback to savepoint 名稱

可以設置多個還原點,但是只能回一次還原點,一旦提交,所有的還原點全部取消(持久性)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/46277.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/46277.shtml
英文地址,請注明出處:http://en.pswp.cn/web/46277.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ubuntu 網絡 通訊學習筆記2

1.ubuntu 網絡常用命令 在Ubuntu中,有許多網絡相關的常用命令。以下是一些主要命令及其用途: ifconfig:此命令用于顯示和配置網絡接口信息。你可以使用它來查看IP地址、子網掩碼、廣播地址等。 例如:ifconfig 注意&#xff1a…

在 K8s 上使用 KubeBlocks 提供的 MySQL operator 部署高可用 WordPress 站點

引言 WordPress WordPress 是全球最流行的內容管理系統(CMS),自 2003 年發布以來,已成為網站建設的首選工具。其廣泛的插件和主題生態系統使用戶能夠輕松擴展功能和美化外觀。活躍的社區提供豐富的資源和支持,進一步…

[RK3588-Android12] 關于如何取消usb-typec的pd充電功能

問題描述 RK3588取消usb-typec的pd充電功能 解決方案: 在dts中fusb302節點下usb_con: connector子節點下添加如下熟悉: 打上如下2個補丁 diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index c8a4e57c9f9b..173f8cb7…

使用OpenCV尋找圖像中的輪廓

引言 OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件庫。它提供了大量的視覺處理功能,包括圖像和視頻捕獲、特征檢測與匹配、圖像變換、圖像分割、顏色空間轉換等。在圖像處理中,尋找圖像中的…

electron項目中實現視頻下載保存到本地

第一種方式:用戶自定義選擇下載地址位置 渲染進程 // 渲染進程// 引入 import { ipcRenderer } from "electron";// 列表行數據下載視頻操作,diffVideoUrl 是視頻請求地址 handleDownloadClick(row) {if (!row.diffVideoUrl) {this.$message…

【數字電路學習新助手】掌握電路仿真軟件,開啟數字電路知識的新篇章

在信息科技日新月異的今天,數字電路知識的重要性不言而喻。無論是通信工程、計算機科學與技術,還是電子信息技術等領域,數字電路都是基礎中的基礎。然而,對于初學者來說,數字電路的學習往往充滿了挑戰。幸運的是&#…

Axure中繼器入門:打造你的動態原型

前言 中繼器 是 Axure 中的一個高級功能,它能夠在靜態頁面上模擬后臺數據交互的操作,如增加、刪除、修改和查詢數據,盡管它不具備真實數據存儲能力。 中繼器就像是一個臨時的數據庫,為我們在設計原型時提供動態數據管理的體驗&a…

中職省培丨2024年大數據技術中職教師專業技能培訓班企業參觀實踐圓滿結束

7月17日,“2024年大數據技術中職教師專業技能培訓班(省培)”參訓老師蒞臨廣東泰迪智能科技股份有限公司產教融合實訓中心開展企業參觀實踐。泰迪智能科技董事長張良均、中職業務部總監李振林、中職業務部經理黃炳德、校企合作經理吳桂鋒及來自…

centos跳過首次創建用戶

centos跳過首次創建用戶 centos跳過首次創建用戶 在安裝系統后,登錄的時候總是讓新建一個普通用戶,很是煩人,于是想辦法解決一下 方法一 在CentOS上,圖形化登錄(如GNOME)通常要求您創建一個用戶來登錄。…

.net core appsettings.json 配置 http 無法訪問

1、在appsettings.json中配置"urls": "http://0.0.0.0:8188" 2、但是網頁無法打開 3、解決辦法,在Program.cs增加下列語句 app.UseAntiforgery();

vue 如何做一個動態的 BreadCrumb 組件,el-breadcrumb ElementUI

vue 如何做一個動態的 BreadCrumb 組件 el-breadcrumb ElementUI 一、ElementUI 中的 BreadCrumb 定義 elementUI 中的 Breadcrumb 組件是這樣定義的 <template><el-breadcrumb separator"/"><el-breadcrumb-item :to"{ path: / }">主…

爬蟲的概念

爬蟲&#xff08;Web Crawler 或 Web Spider&#xff09;是一種自動化腳本或程序&#xff0c;用于瀏覽萬維網&#xff08;World Wide Web&#xff09;并抓取網頁上的信息。它們按照設定的規則自動地訪問互聯網上的網頁&#xff0c;提取所需的數據&#xff0c;如文本、圖片、視頻…

搭建七日殺服務端系統選擇,系統如何選擇

《七日殺》是一款集合了第一人稱射擊、恐怖生存、塔防與角色扮演要素于一身的開放世界僵尸游戲。玩家需要在美國亞歷桑納地區作為幸存者生存&#xff0c;并探究整個事件背后的真相。對于喜歡這款游戲的玩家來說&#xff0c;搭建自己的專屬服務器不僅能降低延遲&#xff0c;還能…

精通Python數據可視化:Matplotlib柱狀圖、直方圖與餅狀圖實戰解析

精通Python數據可視化&#xff1a;Matplotlib柱狀圖、直方圖與餅狀圖實戰解析 引言 在數據分析和科學研究中&#xff0c;數據可視化扮演著至關重要的角色。Matplotlib是Python中一個廣泛使用的繪圖庫&#xff0c;它提供了豐富的繪圖功能和靈活的定制選項。本文將詳細介紹如何…

ubuntu 可以直接在圖像界面打開命令行嗎

是的&#xff0c;Ubuntu&#xff08;以及其他許多Linux發行版&#xff09;允許用戶直接在圖形界面&#xff08;GUI&#xff09;中打開命令行界面。這通常通過打開一個終端模擬器應用程序來實現&#xff0c;該應用程序提供了一個命令行窗口&#xff0c;用戶可以在其中輸入和執行…

修改文件的默認打開方式

修改文件的默認打開方式 選中文件&#xff0c;右擊&#xff0c;選擇屬性&#xff0c;如圖然后點擊更改&#xff0c;選擇想要的打開方式&#xff0c;再依次點擊 應用、保存 即可&#xff0c;如圖

Linux 環境下整體備份遷移 Docker 鏡像及數據教程

1. 介紹 本教程將引導您如何在 Linux 環境下備份和遷移 Docker 鏡像及其數據。我們將逐步介紹相關步驟&#xff0c;包括 Docker 鏡像的導出和導入、數據卷的備份和恢復等。通過本教程&#xff0c;您將能夠輕松掌握 Docker 容器的遷移操作。 2. 前置準備 在開始之前&#xff…

Redis中數據分片與分片策略

概述 數據分片是一種將數據分割并存儲在多個節點上的技術&#xff0c;可以有效提高系統的擴展性和性能。在Redis中&#xff0c;數據分片主要用于解決單個實例存儲容量和性能瓶頸的問題。通過將數據分散存儲到多個Redis節點中&#xff0c;可以將負載均衡到不同的服務器上&#…

Visual Studio使用——在vs中給vb.net項目添加新的窗口:新建的方式、添加已有窗口的方式

目錄 引出Visual Studio使用vb添加新的窗體自定義代碼片段vs顯示所有文件 總結Idea安裝和使用0.Java下載 和 IDEA工具1.首次新建項目2.隱藏文件不必要顯示文件3.目錄層級設置4.Settings設置選擇idea的場景提示代碼不區分大小寫 取消git的代碼作者顯示 引出 Visual Studio使用—…

基于Vue CLI 3構建Vue3項目(Vue2也可參考)

天行健&#xff0c;君子以自強不息&#xff1b;地勢坤&#xff0c;君子以厚德載物。 每個人都有惰性&#xff0c;但不斷學習是好好生活的根本&#xff0c;共勉&#xff01; 文章均為學習整理筆記&#xff0c;分享記錄為主&#xff0c;如有錯誤請指正&#xff0c;共同學習進步。…