1、mysql中的innodb為什么主鍵列使用較短的數據類型比較好?
> InnoDB表是居于聚簇索引,聚簇索引對于主鍵查詢有很高的性能,不過它的二級索引(非主鍵索引)中必須包含主鍵索引,所以如果主鍵列很大的話,其他的所有索引也會很大,使用較短的數據類型可以有效的減少索引的磁盤空間,提高索引的緩存效率
>
2、為什么主鍵不推薦使用UUID、md5、sha1生成的字符串?
> 這些函敗生成的新值會任意分布在很大的空間內,這會導致insert以及 —些SELECT語句變得很慢
1、因為插入值會隨機地寫到索引的不同位置,所以使INSERT語句更慢,這會導致頁分裂、磁盤隨機訪問,以及對于聚簇存儲引擎產生聚簇索引碎片,
2、SELECT語句會變得更慢,因為邏輯上相鄰的行會分布在磁盤和內存的不同地方
3、隨機值導致緩存對所有類型的査詢語句效果都很差,因為會使得緩存賴以工作的訪問局部性原理失效,如果整個數據集都一樣的“熱“,那么緩存任何一部分特定數據到內存都沒有好處,如果工作集比內存大,緩存將會有很多刷新和不命中
- 前言
- 函數參考
- Socket 函數
- socket_accept
- socket_bind
- socket_clear_error
- socket_close
- socket_connect
- socket_create_listen
- socket_create_pair
- socket_create
- socket_getpeername
- socket_getsockname
- socket_last_error
- socket_listen
- socket_read
- socket_recv
- socket_select
- socket_send
- socket_set_block
- socket_set_nonblock
- SplQueue
- 魔術方法
- 魔術常量
- 雜項
- backlog的用處
- new self()和new static()的區別
- PHP變量的生命周期
- PHP抽象類
- 對象接口
- PHP中的常用關鍵字
- 常量
- 內存泄露
- global 與 $GLOBAL
- 簡單說明CGI和動態請求是什么
- 設計模式
- 單例模式
- 工廠模式
- 適配器模式
- 策略模式
- 觀察者模式
- 控制反轉IoC簡介
- session
- use_trans_sid
- auto_start
- session_id
- cookie_secure
- 面試
- 數據庫相關
- 語句相關
- 索引相關
- 字段相關
- PHP相關
- 字符串相關
- 函數相關
- 運算符優先級相關
- 錯誤相關
- redis相關
- 10個常見的Redis面試"刁難"問題
- mysql
- MySQL中的鎖
- MySQL存儲引擎MyISAM 和 InnoDB的區別
- MySQL半同步復制
- explain 命令詳解
- 索引
- 數據庫事務
- MySQL和B樹的那些事
- git
- github----向開源框架提交pr的過程
- 推薦博客
- linux
- 命令
- free
- 高并發
- 搶購/秒殺功能
- 算法
- 一致性Hash算法