91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL 5.7 MyISAM并發插入特性是什么

發布時間:2021-10-25 16:23:38 來源:億速云 閱讀:269 作者:柒染 欄目:MySQL數據庫

MySQL 5.7 MyISAM并發插入特性是什么 ,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

MyISAM存儲引擎支持并發插入來減少表讀寫之間的競爭。如果一張MyISAM表的數據文件沒有洞(在表的中間有刪除行),在SELECT語句從表中讀取行的同時,一條插入語句在執行的時候可以將新插入的行增加到表的最后。如果有多個INSERT語句,它們會排成隊列并依次執行。并發插入的結果可能不會立刻可見。
 系統參數concurrent_insert可以用來更改并發插入的處理。默認,這個參數的值是AUTO(或1),并發插入是開啟的;當這個參數設為NEVER (或0)時,并發插入是關閉的。當這個參數為ALWAYS (或 2)時,即使表中有刪除的行,并發插入也允許在表的后端執行。如果MySQL使用了二進制日志,并發插入會被轉化成普通的插入語句,例如CREATE...SELECT或INSERT ... SELECT語句。這樣做是為了保證可以通過應用日志來重建表中的準確數據。另外,對于那些加了只讀鎖的表,并發插入動作會被阻塞,需要等待。
 
使用LOAD DATA INFILE語句,如果對一張滿足并發插入條件的MyISAM表指定了CONCURRENT選項(這張表的終極沒有空閑的數據塊),當LOAD DATA語句執行時,其他會話可以從這張表中查詢數據。使用CONCURRENT選項會對LOAD DATA的性能有少許影響,即使是在其他會話沒有使用這張表的情況下。如果指定了HIGH_PRIORITY選項,當MySQL服務以--low-priority-updates參數啟動時,它會覆蓋--low-priority-updates參數。它同時也會導致并發插入不會被使用。

mysql> show variables like '%low%priority%';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| low_priority_updates | OFF   |
+----------------------+-------+
1 row in set (0.00 sec)

如果這個參數的值設為1,所有的INSERT、UPDATE、DELETE和LOCK TABLE WRITE語句都會等待,直到在指定的MyISAM表上沒有懸掛的SELECT或LOCK TABLE READ語句。
這個參數只對使用表級鎖的存儲引擎生效(例如MyISAM、MEMORY和MERGE)。

對于LOCK TABLE語句,READ LOCAL和READ語句的區別是,當加鎖的時候,READ LOCAL允許插入語句和并發插入語句的執行。
mysql> show variables like '%concurrent%';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| concurrent_insert | AUTO  |
+-------------------+-------+
1 row in set (0.00 sec)
 
concurrent_insert
 
 這個參數的默認值是AUTO,MySQL會允許并發插入,如果MyISAM表中間沒有被刪除的行,會在表尾插入數據。如果啟動mysqld帶有--skip-new參數,這個參數的是會被設為NEVER。
 
 NEVER (或 0)    關閉并發插入
 AUTO (或 1)    允許并發插入,如果MyISAM表中間沒有被刪除的行,會在表尾插入數據
 ALWAYS (或 2)    允許并發插入,無論MyISAM表中間沒有被刪除的行,都會在表尾插入數據
 
 mysql> show variables like 'concurrent%';
 +-------------------+-------+
 | Variable_name     | Value |
 +-------------------+-------+
 | concurrent_insert | AUTO  |
 +-------------------+-------+
 1 row in set (0.00 sec)
 
 會話①
 mysql> lock table test read local;
 Query OK, 0 rows affected (0.00 sec)
 
 同一會話內的插入或更新操作會失敗
 mysql> insert into test values(90, 'Jimmy');
 ERROR 1099 (HY000): Table 'test' was locked with a READ lock and can't be updated
 mysql> update test set name='Trinity' where id=80;
 ERROR 1099 (HY000): Table 'test' was locked with a READ lock and can't be updated
 
 會話②
 允許插入操作
 mysql> insert into test values(90, 'Jimmy');
 Query OK, 1 row affected (0.00 sec)
 
 會話①
 查詢會話②的新插入行,會查詢到空集
 mysql> select * from test where id=90;
 Empty set (0.00 sec)

mysql> show variables like '%isolation%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| tx_isolation  | REPEATABLE-READ |
+---------------+-----------------+
1 row in set (0.00 sec)

 mysql> unlock tables;
 Query OK, 0 rows affected (0.00 sec)
 
 會話②
 更新操作會等待
 mysql> update test set name='Trinity' where id=80;
 Query OK, 1 row affected (1 min 10.11 sec)
 
 直到會話①執行unlock tables語句,會話②才會結束等待
 Rows matched: 1  Changed: 1  Warnings: 0
 
 會話①
 執行unlock tables語句后,可以成功查詢到會話②中新插入的數據
 mysql> select * from test where id=90;
 +------+-------+
 | id   | name  |
 +------+-------+
 |   90 | Jimmy |
 +------+-------+
 1 row in set (0.00 sec)

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

闻喜县| 偏关县| 谢通门县| 南和县| 道真| 巴里| 淮阳县| 益阳市| 柳河县| 苍南县| 朔州市| 沙雅县| 巢湖市| 额济纳旗| 大渡口区| 曲阜市| 庆云县| 宽甸| 饶河县| 班玛县| 淳安县| 弥渡县| 青田县| 常宁市| 牟定县| 西城区| 保德县| 浮梁县| 临沂市| 信阳市| 确山县| 泰宁县| 潜山县| 怀宁县| 洪洞县| 灵石县| 伊通| 湘阴县| 武宁县| 吉木萨尔县| 海盐县|