mysql 存储过程循环一张表的所有记录_MySQL数据库知识汇总
MySQL是一個開源的關系型數(shù)據(jù)庫,是最受歡迎的開源軟件之一,現(xiàn)在很多網(wǎng)站的數(shù)據(jù)庫都是使用MySQL。Web程序開發(fā)是Python的一個重要方向,也因此很多企業(yè)在招聘Python工程師時都會考察其對MySQL的掌握,接下來就給大家分享MySQL數(shù)據(jù)庫相關的知識點。
1、MySQL數(shù)據(jù)庫存儲過程和函數(shù)的區(qū)別
存儲過程和函數(shù)是事先經過編譯并存儲在數(shù)據(jù)庫中的一段SQL語句的集合,二者的區(qū)別在于函數(shù)必須有返回值,而存儲過程沒有;函數(shù)的參數(shù)只能是IN類型,存儲過程的參數(shù)可以使用IN、OUT、INOUT類型。
2、分庫與分表設計
分庫與分表的目的在于減小數(shù)據(jù)庫的單庫單表負擔,提高查詢性能,縮短查詢時間。通過分表,可以減少數(shù)據(jù)庫的單表負擔,將壓力分散到不同的表上,同時因為不同的表上的數(shù)據(jù)量少了,起到提高查詢性能,縮短查詢時間的作用,此外,可以很大的緩解表鎖的問題。
分表策略可以歸納為垂直拆分和水平拆分。
水平分表:取模分表就屬于隨機分表,而時間維度分表則屬于連續(xù)分表。
如何設計好垂直拆分,建議將不常用的字段單獨拆分到另外一張擴展表. 將大文本的字段單獨拆分到另外一張擴展表, 將不經常修改的字段放在同一張表中,將經常改變的字段放在另一張表中。
對于海量用戶場景,可以考慮取模分表,數(shù)據(jù)相對比較均勻,不容易出現(xiàn)熱點和并發(fā)訪問的瓶頸。庫內分表,僅僅是解決了單表數(shù)據(jù)過大的問題,但并沒有把單表的數(shù)據(jù)分散到不同的物理機上,因此并不能減輕 MySQL 服務器的壓力,仍然存在同一個物理機上的資源競爭和瓶頸,包括CPU、內存、磁盤IO、網(wǎng)絡帶寬等。
自行車
3、聚集索引與非聚集索引的區(qū)別
聚集索引和非聚集索引的根本區(qū)別是表記錄的排列順序和與索引的排列順序是否一致。 聚集索引(innodb)的葉節(jié)點就是數(shù)據(jù)節(jié)點,而非聚集索引(myisAM)的葉節(jié)點仍然是索引節(jié)點,只不過其包含一個指向對應數(shù)據(jù)塊的指針。
4、事務四大特性(ACID)
原子性:一個事務(transaction)中的所有操作,要么全部完成,要么全部不完成,不會結束在中間某個環(huán)節(jié)。事務在執(zhí)行過程中發(fā)生錯誤,會被恢復(Rollback)到事務開始前的狀態(tài),就像這個事務從來沒有執(zhí)行過一樣。
一致性:在事務開始之前和事務結束以后,數(shù)據(jù)庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預設規(guī)則,這包含資料的精確度、串聯(lián)性以及后續(xù)數(shù)據(jù)庫可以自發(fā)性地完成預定的工作。
隔離性:數(shù)據(jù)庫允許多個并發(fā)事務同時對其數(shù)據(jù)進行讀寫和修改的能力,隔離性可以防止多個事務并發(fā)執(zhí)行時由于交叉執(zhí)行而導致數(shù)據(jù)的不一致。事務隔離分為不同級別,包括讀未提交(Read uncommitted)、讀提交(read committed)、可重復讀(repeatable read)和串行化(Serializable)。
持久性:事務處理結束后,對數(shù)據(jù)的修改就是永久的,即便系統(tǒng)故障也不會丟失。
5、事務的并發(fā)?事務隔離級別,每個級別會引發(fā)什么問題,MySQL默認是哪個級別?
臟讀是指在一個事務處理過程中讀取了另一個事務未提交的數(shù)據(jù)。
不可重復讀:對于數(shù)據(jù)庫中的某個數(shù)據(jù),一個事務范圍內多次查詢卻返回了不同的數(shù)據(jù)值。
幻讀:事務非獨立執(zhí)行時發(fā)生的一種現(xiàn)象,即在一個事務讀的過程中,另外一個事務可能插入了新數(shù)據(jù)記錄,影響了該事務讀的結果。
MySQL的默認隔離級別就是Repeatable read,可重復讀。
從理論上來說, 事務應該彼此完全隔離, 以避免并發(fā)事務所導致的問題,然而,那樣會對性能產生極大的影響, 因為事務必須按順序運行,在實際開發(fā)中,為了提升性能,事務會以較低的隔離級別運行, 事務的隔離級別可以通過隔離事務屬性指定。
總結
以上是生活随笔為你收集整理的mysql 存储过程循环一张表的所有记录_MySQL数据库知识汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python居中对齐代码end_Pyth
- 下一篇: 人脸识别撞脸名画_与名画“撞脸”火爆数博