原创 C 語言中&&,||,&,|的區別

&&:邏輯與,前後條件同時滿足表達式爲真 ||:邏輯或,前後條件只要有一個滿足表達式爲真 &:按位與 |:按位或 &&和||是邏輯運算,&與|是位運算 假如a = 0xaa ,b = 0x55 a&&b = true ,在計算機中tru

原创 mongodb 3.0 Config Server Availability

      If the config server replica set loses its primary and cannot elect a primary, the cluster’s metadata becomes rea

原创 索引對idus(增刪改查)的影響

索引的原理: 索引是一個B+二叉樹。從原理上說B+二叉樹的特性 決定了對insert、update、delete、select的影響和作用。 索引優點:查詢效率變快。 索引缺點:建立索引過多,會影響insert速度。 如果新insert一

原创 mysql 索引頁物理結構--physical structer of an innodb index

mysql 索引頁物理結構-physical structer of an innodb index https://dev.mysql.com/d

原创 mysql insert 加鎖流程

INSERT sets an exclusive lock on the inserted row. This lock is an index-record lock, not a next-key lock (that is, the

原创 innodb中不同語句設置不同鎖類型

  在鎖讀的過程中,一個update 或一個delete 經常設置記錄鎖在每一個索引記錄上。這與where條件中是否排除此條索引記錄沒有關係。innodb認不出擴展的where擴展條件,只會認出那些索引區間被掃描。The locks ar

原创 mysql源碼心得--how to read mysql source

  1、深入瞭解某一模塊前,要一步步來,否則會有很大的挫敗感。首先了解下模塊重要的數據結構和算法   2、設置斷點,瞭解執行流程,瞭解重要函數   3、接下來深入閱讀重要函數的源碼,同時回顧與其他模塊(已經瞭解過)的交互銜接。 關於資料

原创 lock0lock.c裏面函數總結

google了大部分資料,結合自己的理解,總結下lock0lock.c文件裏函數 死鎖相關函數 lock_deadlock_recursive():死鎖判斷 死鎖日誌產生 lock_deadlock_trx_print():死鎖中事務信息

原创 insert into 加鎖機制

關於MySQL innodb Insert into 加鎖的機制的文章網上很少,個人對於insert 的加鎖機制比較感興趣,所以通過此wiki對研究的過程做個總結,如有不對的地方,歡迎指正。 我先把官方文檔對於insert 加鎖的描述

原创 鎖相關的幾個重要函數

記錄下鎖相關的幾個重要函數:  lock_table (): 負責加表鎖 lock_rec_lock():鎖記錄的重要函數 row_lock_table_autoinc_for_mysql(): 負責管理表auto increment自增

原创 mysql insert 相關的鎖函數lock_rec_insert_check_and_lock 源碼

/*============ RECORD LOCK CHECKS FOR ROW OPERATIONS ====================*/ /*****************************************

原创 5.6之後新特性

 在5.6之後版本中,如果binlog格式設置爲statement 。那麼 insert  .....select .....語句將是不安全。如下報警信息  Unsafe statement written to the binary l

原创 mysql5.5.31 log0log.c中log_write_up_to 函數代碼

/******************************************************//** This function

原创 mysql rr 隔離級別解決幻讀

幻讀概念:   幻讀是指在同一事務下當A用戶讀取某一範圍的數據行時,B事務在該範圍內插入了新行,當A用戶再讀取該範圍的數據行時,會發現有新的“幻影”

原创 mysql 批量update更新數據

#!/bin/sh   mysqlconn="mysql -uroot" db="dbname" table1="tablename" while