mysql8數據庫特性(mysql8 新特性)

本文目錄一覽:

mysql 獨有的特性?

MySQL的一些特點

1. 使用核心線程的完全多線程。這意味着它能很容易地利用多CPU(如果有)。

2. 支持C 、C++、 Eiffel 、 Java、 Perl、 PHP、Python、和 TCL API等客戶工具和 API。

3. 可運行在不同操作系統平台上。

4. 支持多種列類型:1、 2、 3、4、和 8 字節長度的有符號/無符號整數、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、SET和ENUM類型。

5. 利用一個優化的一遍掃描多重聯結(one-sweep multi-join)非常快速地進行聯結(join)。

6. 在查詢的SELECT和WHERE部分支持全部運算符和函數,例如:

mysql SELECT CONCAT(first_name, ” “, last_name) FROM tbl_name

WHERE income/dependents 10000 AND age 30;

7. 通過一個高度優化的類庫實現SQL函數庫並且像他們能達到的一樣快速,通常在查詢初始化後不應該有任何內存分配。

8. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函數( COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、 MAX()和MIN() )。

9. 支持ANSI SQL的LEFT OUTER JOIN和ODBC語法,你可以在同一查詢中混用來自不同數據庫的表。

10. 一個非常靈活且安全的權限和口令系統,並且它允許基於主機的認證。口令是安全的,因為當與一個服務器連接時,所有的口令傳送被加密。

11. ODBC for Windiws 95。所有的 ODBC 2 . 5 函數和其他許多函數。例如,你可以用Access連接你的 MySQL服務器,具備索引壓縮的快速B樹磁盤表。

12. 每個表允許有16個索引。每個索引可以由1~16個列或列的一部分組成。最大索引長度是 256 個字節(在編譯MySQL時,它可以改變)。一個索引可以使用一個CHAR或VARCHAR字段的前綴。

13. 定長和變長記錄。用作臨時表的內存散列表。

14. 大數據庫處理。我們正在對某些包含 50,000,000 個記錄的數據庫使用MySQL。

15. 所有列都有缺省值,你可以用INSERT插入一個表列的子集,那些沒用明確給定值的列設置為他們的缺省值。為了可移植性使用 GNU Automake , Autoconf 和libtool。

16. 用C和C++編寫,並用大量不同的編譯器測試,一個非常快速的基於線程的內存分配系統。

17. 全面支持ISO-8859-1 Latin1 字符集。例如,斯堪的納維亞的字符 @ringaccent{a}, @”a and @”o 在表和列名字被允許。

18. 表和列的別名符合 SQL92 標準。

19. 函數名不會與表或列名衝突。例如ABS是一個有效的列名字。

20. 客戶端使用TCP/IP 連接或Unix套接字(socket)或NT下的命名管道連接MySQL。

21. MySQL特有的SHOW命令可用來檢索數據庫、表和索引的信息,EXPLAIN命令可用來確定優化器如何解決一個查詢。

以上來自網絡,我自己感覺的話有:

1、輕量級、體積小

2、可嵌入

3、支持多重存儲引擎

4、開源

5、適用海量查詢、PHP等網站開發支持最好了,建站首選。

MYSQL相比於其他數據庫有哪些特點

1.使用C和C++編寫,並使用了多種編譯器進行測試,保證源代碼的可移植性 ;

2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統 ;

3.為多種編程語言提供了API。這些編程語言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。 ;

4.支持多線程,充分利用CPU資源 ;

5.優化的SQL查詢算法,有效地提高查詢速度 ;

6.既能夠作為一個單獨的應用程序應用在客戶端服務器網絡環境中,也能夠作為一個庫而嵌入到其他的軟件中提供多語言支持,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數據表名和數據列名;

7.提供TCP/IP、ODBC和JDBC等多種數據庫連接途徑 ;

8.提供用於管理、檢查、優化數據庫操作的管理工具 ;

9.可以處理擁有上千萬條記錄的大型數據庫。

mysql8好用嗎?現在用的多嗎?

mysql8 可以說是一個質的飛越。增加了很多新特性,以及提高了各方面的速度。增加了開窗函數

Ⅱ InnoDB增強

自增列方面

自增列方面。現在自增列計數器會在每次值修改時,將值寫到REDO LOG中,並且在CHECKPOINT時寫到存儲引擎私有的系統表中。

這就消除了以往重啟實例自增列不連續的問題(這也可能形成了一個新的競爭點(蓋國強會上提問InnoDB開發者))。

Btree索引方面

Btree索引被損壞。InnoDB會向REDO LOG中寫入一個損壞標誌。同時也會CHECKPOINT時將內存中損壞頁的數據記錄到存儲引擎私有的系統表中。

這也就促成了恢復時。兩邊一致的情形。索引不可用,並不會造成實例起不來。這很大程度上降低了之前使用innodb_force_recovery和innodb_fast_shutdown的必要。

提升了一致性。(對於一般DBA來說透明,知道有這麼回事就好)

NoSQl操作

InnoDB memcached插件支持多個get操作(在單個memcached查詢中獲取多個鍵/值對)

和範圍查詢。(個人認為這個挺牛逼,有點像NoSQL,不僅僅是NoSQL)。

需要安裝daemon_memcached插件,其中多了一個innodb_memcache schema,這個schema中有幾張表,其中一張containers用來與InnoDB表之間做映射,,

然後通過接口訪問Innodb表。然後會有一個11211的端口打開,用於建立連接。

好處是通過減少客戶端和服務器之間的通信流量,在單個memcached查詢中獲取多個鍵/值對的功能可以提高讀取性能。

對於InnoDB來說,也意味着更少的事務和開放式表操作。

死鎖檢測

新的動態配置選項innodb_deadlock_detect可用于禁用死鎖檢測,默認打開。 在高並發系統上,當大量線程等待相同的鎖時,死鎖檢測會導致速度下降。 有時,在死鎖發生時,

禁用死鎖檢測並依賴innodb_lock_wait_timeout設置進行事務回滾可能更有效。記得之前版本遇到死鎖會自動回滾。以下截圖來自MySQL5.7,與8.0默認相同。

(也就是說即便MySQL5.7也是有死鎖檢測的,並且自動回滾權重較小的事務(套死除外))。

嘗試更改innodb_deadlock_detect參數為OFF。則遇到死鎖時兩個工作線程都會被堵塞。直到innodb_lock_wait_timeout設定的鎖超時。

新的INFORMATION_SCHEMA.INNODB_CACHED_INDEXES表保存了Innodb索引緩存在Innodb buffer pool中的頁數。

現在,所有InnoDB臨時表都將在共享臨時表空間ibtmp1中創建。

加密特性

支持REDO和UNDO表空間加密。

共享鎖方面

InnoDB在 SELECT … FOR SHARE 和 SELECT … FOR UPDATE鎖定讀語句上 支持不等待( NOWAIT)和跳過鎖(SKIP LOCKED)的選項。也就是說以往加了共享鎖之後必須手動釋放。

這裡如果沒有鎖就返回結果,如果有就報下面錯誤。

如果是用有鎖就跳過,則無數據。

根據場景使用。反正都是秒回。降低了排查數據庫超時的可能。

原創文章,作者:O3BC0,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/128354.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
O3BC0的頭像O3BC0
上一篇 2024-10-03 23:24
下一篇 2024-10-03 23:24

相關推薦

  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Python計算機語言的特性與應用

    Python,是一種高層次、解釋型的、面向對象的計算機編程語言。 一、簡介 Python編程語言的初衷是:代碼簡潔易讀、可拓展性強、適用範圍廣。其應用領域包括Web開發、數據科學、…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Python怎麼導入數據庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的數據庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28
  • Think-ORM數據模型及數據庫核心操作

    本文主要介紹Think-ORM數據模型建立和數據庫核心操作。 一、模型定義 Think-ORM是一個開源的ORM框架,用於簡化在PHP應用中(特別是ThinkPHP)與關係數據庫之…

    編程 2025-04-27
  • 如何使用Python將CSV文件導入到數據庫

    CSV(Comma Separated Values)是一種可讀性高、易於編輯與導入導出的文件格式,常用於存儲表格數據。在數據處理過程中,我們有時需要將CSV文件導入到數據庫中進行…

    編程 2025-04-27
  • Python批量導入數據庫

    本文將介紹Python中如何批量導入數據庫。首先,對於數據分析和挖掘領域,數據庫中批量導入數據是一個必不可少的過程。這種高效的導入方式可以極大地提高數據挖掘、機器學習等任務的效率。…

    編程 2025-04-27
  • Activiti 6自動部署後不生成數據庫act_hi_*的解決方法

    本文將從多個方面詳細闡述Activiti 6自動部署後不生成數據庫act_hi_*的問題,並提供對應的代碼示例。 一、問題分析 在使用Activiti 6部署流程後,我們發現act…

    編程 2025-04-27

發表回復

登錄後才能評論