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

歡迎訪問 生活随笔!

生活随笔

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

数据库

数据库知识整理笔记

發布時間:2023/12/20 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库知识整理笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

事務的主要特性:原子性、一致性、獨立性和持久性(ACID)

數據庫應用優化

1、基本語句優化10個原則

1)盡量避免在列上進行運算,這樣會導致索引失效

2)使用join時,應該用小結果集驅動大結果集。同時把復雜的join查詢拆分成多個query

3)注意like模糊查詢的使用,避免%%

4)僅列出需要查詢的字段,這對速度不會有明顯的影響,主要考慮節省內存

5)使用批量插入語句節省交互

6)limit的基數比較大時使用between

7)不要使用rand函數獲取多條隨機記錄

8)避免使用NULL

9)不要使用count(id),應該使用count(*)

10)不要做無謂的排序,應盡可能在索引中完成排序

2、mysql索引建立和使用基本原則

1)合理設計和使用索引

2)在關鍵字的索引上,建與不建索引,查詢速度相差近100倍

3)差的索引和沒有索引效果一樣

4)索引并非越多越好,因為維護索引需要成本

5)每個表的索引應在5個以下,應合理利用部分索引和聯合索引

6)不在結果集中的結果單一的列上建索引

7)建索引的字段結果集最好分布均勻,或者符合正態分布

3、服務器和配置優化

選擇存儲引擎的基本原則:

1)采用MyISAM引擎:讀/寫>100:1且update相對較少;并發不高,不需要事務;表數據量小;硬件資源有限

2)采用InnoDB引擎:R/W比較小,頻繁更新大字段;表數據量超過1000萬,并發高;安全性和可用性要求高

3)采用Memory引擎:有足夠的內存;對數據一致性要求不高;需要定期歸檔的數據

mysql服務器調整優化:

1)關閉不必要的二進制日志和慢查詢日志,僅在內存足夠或開發調試時打開他們

2)適度使用query cache

3)增加mysql允許的最大連接數(show variables like 'max_connections')

4)對myisam表適當增加key_buffer_size

mysq瓶頸及應對措施:

1)增加mysql配置中的buffer和cache的數值,增加服務器cpu數量和內存的大小

2)使用第三方引擎或衍生版本

3)遷移其他數據庫

數據庫分區

概念:所謂分區就是把一個數據表的文件和索引分散存儲在不同的物理文件中。mysql支持的分區類型包括:range(常用)、list、hash、key

分區的注意事項

1)主鍵或者唯一索引必須包含分區字段

2)很多時候,使用分區就不要再使用主鍵,可能影響性能

3)只能通過int類型的字段或者返回int類型的表達式來分區,通常用year或to_days等函數

4)每個表最多1024個分區,不可能無限制擴展分區,而且過度使用分區往往會消耗大量系統內存

5)采用分區的表不支持外建

6)分區后,可能造成索引失效,需要驗證分區可行性

數據庫分表

概念:分表思想和分區類似,區別是:分區是把一個邏輯文件分成幾個物理文件后進行存儲,而分表則是把原先宇哥表拆分成幾個表。進行分表查詢時,可以union或者做一個視圖。分表又分為垂直切分和水平切分,其中水平切分最常用

mysql高級應用

1、mysql自增長序列(auto_increment)

可能需要使用序列的情況:

1)業務復雜,需要定制和控制主鍵時

2)希望手工維護自增長,方便數據遷移

3)需要業務上一個有意義的主鍵時,比如單據號

4)當事務跨多表,期望事務可靠性

5)主鍵很明確的需要和其他表關聯時

6)期望主鍵是唯一的,不需要重復利用時

2、msql視圖

概念:視圖是一個虛擬表,其內容由查詢定義。對其中所引用的基礎表來說,視圖的作用類似于篩選,篩選

當前或者其他數據庫的一個或多個表

創建視圖的注意事項:

1)select語句不能包含from子句中的子查詢

2)select語句不能引用系統或用戶變量

3)select語句不能引用預處理語句

4)在存儲子程序內,定義不能引用子程序的參數或局部變量

5)在定義中引用的表或視圖必須存在

6)在定義中不能引用temporary表,不能創建temporary

7)在視圖定義中命名的表必須已存在

8)不能將觸發程序與視圖關聯在一起

9)在試圖定義中允許使用order by,但是,如果從特定視圖進行了選擇,而視圖又使用了具有自己的order by的語句,他將被忽略

10)不能給視圖添加索引

11)視圖通常不允許更新

3、mysql存儲過程和事件調度

概念:利用sql語言完成復雜的數據庫層業務操作,通過編寫存儲過程來實現

創建存儲過程步驟:

1)確定輸入/輸出參數和類型(IN表示輸入參數,$tname是參數名,varchar(20)是參數類型)

2)定義變量和賦值(使用declare關鍵字定義變量,set關鍵字用來賦值)

3)過程的主體部分,可以是各種運算,也可以是數據庫操作

4)程序的返回值。可以有返回值,也可以無返回值

優缺點:存儲過程能提升效率,還具有模塊化、易于復用、可以移植等特點,但mysql存儲過程沒有強大的調試工具,不易維護。

4、mysql模擬消息隊列:

隊列概念:隊列和棧一樣,是一種線性表結構,不過隊列是一種先進先出的數據結構。隊列只允許在后端進行插入操作,在前端進行刪除操作。

消息隊列:在消息的傳輸過程中保存消息的容器

消息隊列管理器:將消息從它的源中繼到它的目標時充當中間人的角色

隊列作用:主要提供路由并保證筱梓的傳遞,如果發送消息時接收者不可用,消息隊列會保留消息,直到成功的傳遞。

消息隊列作用:可以很好的異步處理數據傳送和存儲,當頻繁地向數據庫中插入數據時,就可采取消息隊列異步插入。另外,可將較慢的處理邏輯、有并發數量限制的處理邏輯,通過消息隊列放在后臺處理。如:視頻轉換、發送手機短信

5、sql注入漏洞與防范:

1)如果是整型變量或字段,使用intval()函數把所有傳入參數轉化為一個數值

2)對于字符型變量,用addslashes()會把所有的單引號、雙引號、反斜線和空字符轉換為含有反斜線的溢出字符

3)轉義或過濾一些特殊字符

4)保護表結構等關鍵信息

5)任何情況下做好安全備份

轉載于:https://my.oschina.net/u/863367/blog/862521

總結

以上是生活随笔為你收集整理的数据库知识整理笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

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