phpmysql鎖
『壹』 php 中的mysql for update 加鎖後還其他用戶還能讀取嗎
加鎖後只能讀,但不能寫。
『貳』 php mysql的鎖機制 怎麼寫
MYSQL中的鎖:
語法 :
LOCK TABLE 表名1 READ|WRITE, 表名2 READ|WRITE .................. 【鎖表】
UNLOCK TABLES 【釋放表】
Read:讀鎖|共享鎖 : 所有的客戶端只能讀這個表不能寫這個表
Write:寫鎖|排它鎖: 所有當前鎖定客戶端可以操作這個表,其他客戶端只能阻塞
注意:在鎖表的過程中只能操作被鎖定的表,如果要操作其他表,必須把所有要操作的表都鎖定起來!
PHP中的文件鎖 (鎖的是文件,不是表)
文件鎖的文件與表有什麼關系?:一點關系也沒有,與令牌相似,誰拿到誰操作。所以表根本沒鎖。
測試時,有個文件就行,叫什麼名無所謂
『叄』 php中mysql加鎖問題
有表鎖,行鎖,頁鎖
頁級:引擎 BDB。
表級:引擎 MyISAM , 理解為鎖住整個表,可以同時讀,寫不行
行級:引擎 INNODB , 單獨的一行記錄加鎖
1) 表級鎖:開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖沖突的概率最高,並發度最低。
2) 行級鎖:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖沖突的概率最低,並發度也最高。
3) 頁面鎖:開銷和加鎖時間界於表鎖和行鎖之間;會出現死鎖;鎖定粒度界於表鎖和行鎖之間,並發度一般。
一般不在PHP中使用鎖操作,因為如果鎖了庫,如果遇到錯誤沒有及時的解鎖,就會導致不能訪問數據的情況。
可以使用MYSQL的事務,就是定義事務開始,然後有幾個語句要執行,然後根據情況,如果有一個語句沒有執行成功,可以回滾(取消這幾個語句的執行),從而達到幾個語句都執行成功或者都不執行的效果,在強事務型的應用中一般使用這個方式
你可以去後盾人平台看看,裡面的東西不錯
『肆』 PHP MYSQL中 表鎖和行鎖 一般什麼情況下使用 另外具體怎麼寫
手動加鎖:
表級鎖
lock tables tablename read;//共享鎖
lock tables tablename write;//排它鎖
unlock tables;//解鎖
php直接query就行了。
除了MyIsam,誰還會無聊到顯式加鎖?
InnoDB直接跑事務默認會觸發隱式鎖,不需要自己lock和unlock。
『伍』 求助老師:關於php+mysql密碼加密與登錄問題
如果你得php版本在5.5以上的話可以直接使用php推出的一個password_hash方法對密碼進行加密,
或者使用這個polyfill可以達到一樣的效果
$salt = mcrypt_create_iv(22, MCRYPT_DEV_URANDOM);
$salt = base64_encode($salt);
$salt = str_replace('+', '.', $salt);
$hash = crypt('rasmuslerdorf', '$2y$10$'.$salt.'$');
echo $hash
『陸』 php語言mysql資料庫 充值平台 是否需要加鎖表
事務就可以 不需要單獨進行鎖操作
事務 = 鎖 + 並發
『柒』 php中如何避免mysql資料庫死鎖
mysql一般不會死鎖,除非程序有問題。性能優先事務不優先的資料庫(設置)不要追求可靠性萬無一失。
網站性能問題主要是資料庫量大了以後,查詢掃描硬碟而產生的。其它性能不要太在意。編寫代碼的時候不要堅持性能原則,而是堅持可用性原則。初學者編寫代碼通常容易面向性能,但是一個項目的一個頁面幾百、幾千行代碼是很常見的。要面向可用性、可維護性、可讀性。這是項目原則。你看看java語言。對於網站,除了查詢掃描硬碟而產生的時間延遲,其它是不管的,只要不算有問題就可以。
連接方式是否為永久連接,在訪問量未達到高並發之前,還是非永久鏈接更好。非永久連接的資源消耗是不大於永久連接的,因為mysql是把連接許可權緩存的,不會多次掃描硬碟,性能是可執行級別的而不是查找數據級別的。在訪問量達到高並發之後,性能問題的原因是多方面的,多環節的,是否為永久連接不是主要原因。
『捌』 並發時,php操作mysql需要加鎖嗎mysql在並發時讀寫數據表會加鎖,我覺得不用再手動加鎖,請問是這樣嗎
你得先了解mysql的表鎖機制 以及具體伺服器是apache活著nginx 或者別的什麼,這都是有區別的
『玖』 開發php網站,mysql做資料庫一定要用鎖嗎
一般情況下,MYSQL在更新操作會自動加表鎖。不需要顯式加鎖。除非是數據要求嚴格的邏輯寫順序。
執行查詢語句(SELECT)前,會自動給涉及的所有表加讀鎖,在執行更新操作 (UPDATE、DELETE、INSERT等)前,會自動給涉及的表加寫鎖,這個過程並不需要用戶干預,因此,用戶一般不需要直接用LOCK TABLE命令給MyISAM表顯式加鎖。
『拾』 PHP如何鎖住MYSQL表數據
引用
5
樓
xuzuning
的回復:只在
update
時才考慮加鎖比如添加一條數據,兩個用戶添加的數據ID相同當id為自增欄位時,這種情況不會發生。否則就不叫資料庫了+++++++