久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL 5.7 MyISAM并發(fā)插入特性是什么

128次閱讀
沒有評論

共計 2864 個字符,預計需要花費 8 分鐘才能閱讀完成。

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

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

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

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

對于 LOCK TABLE 語句,READ LOCAL 和 READ 語句的區(qū)別是,當加鎖的時候,READ LOCAL 允許插入語句和并發(fā)插入語句的執(zhí)行。
mysql show variables like %concurrent%
+——————-+——-+
| Variable_name  | Value |
+——————-+——-+
| concurrent_insert | AUTO  |
+——————-+——-+
1 row in set (0.00 sec)
 
concurrent_insert
 
  這個參數(shù)的默認值是 AUTO,MySQL 會允許并發(fā)插入,如果 MyISAM 表中間沒有被刪除的行,會在表尾插入數(shù)據(jù)。如果啟動 mysqld 帶有 –skip-new 參數(shù),這個參數(shù)的是會被設為 NEVER。
 
 NEVER (或 0)  關閉并發(fā)插入
 AUTO (或 1)  允許并發(fā)插入,如果 MyISAM 表中間沒有被刪除的行,會在表尾插入數(shù)據(jù)
 ALWAYS (或 2)  允許并發(fā)插入,無論 MyISAM 表中間沒有被刪除的行,都會在表尾插入數(shù)據(jù)
 
 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)
 
  同一會話內(nèi)的插入或更新操作會失敗
 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)
 
  直到會話①執(zhí)行 unlock tables 語句,會話②才會結束等待
 Rows matched: 1  Changed: 1  Warnings: 0
 
  會話①
  執(zhí)行 unlock tables 語句后,可以成功查詢到會話②中新插入的數(shù)據(jù)
 mysql select * from test where id=90;
 +——+——-+
 | id  | name  |
 +——+——-+
 |  90 | Jimmy |
 +——+——-+
 1 row in set (0.00 sec)

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

正文完
 
丸趣
版權聲明:本站原創(chuàng)文章,由 丸趣 2023-07-27發(fā)表,共計2864字。
轉(zhuǎn)載說明:除特殊說明外本站除技術相關以外文章皆由網(wǎng)絡搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 奇台县| 禄丰县| 铁力市| 仙桃市| 芒康县| 大同市| 江都市| 海原县| 横山县| 保靖县| 同江市| 普格县| 武冈市| 翁牛特旗| 社会| 平武县| 葫芦岛市| 温宿县| 治县。| 依安县| 揭东县| 宣威市| 波密县| 房山区| 隆林| 香格里拉县| 咸阳市| 海南省| 邛崃市| 平江县| 卢氏县| 龙井市| 榆社县| 赤城县| 湾仔区| 阳春市| 开化县| 鹰潭市| 山西省| 庆元县| 安吉县|