日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

linux sqlserver_SQL Server 与 MySQL存储引擎

發布時間:2024/9/27 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux sqlserver_SQL Server 与 MySQL存储引擎 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?????? SQLServer 與 MySQL 出自于不同的公司,最大的區別在于一個開源、一個不開源;不開源的提供低版本免費使用,無法使用高級功能,而開源的就不一樣,提供所有的功能使用;

?????? 關于存儲引擎本人能力有限學識淺薄,只能記錄一下我能力范圍內對SQL Server 和 MySQL 存儲引擎的理解;如果有寫的不對的地方請各路大神多多指導。

?????? 存儲引擎可以分為兩部分理解,一部分是存儲,一部分是引擎;存儲是把數據存儲到磁盤上,引擎是為數據存儲到磁盤上增加動力的,也就是提升數據存儲的速度同時也對數據更新提升速度優化I/O。說到存儲一定會想到硬件想到性能,由于本人學的太淺,沒法去講磁盤的內部結構和底層原理。

?????? SQLServer 與 MySQL 存儲引擎它們的底層都是磁盤,而它們存儲的算法最小單元都是頁,多個頁組成一個段,多個段組成一個區,其實區就是表;這是他們的通用步驟。但是SQL Server的一個頁是8KB 而MySQL的一個頁是16KB;頁是SQL Server和MySQL 讀取的最小I/O單元,也就是說讀取某個表中的數據時,會把需要查詢行所在的頁都讀取出來,這就是我有時候感覺到在SQL Server中查詢時比在MySQL中時快時慢。

?????? 存儲引擎不僅提供數據讀寫速度,還提供數據安全、事務管理、日志、鎖、備份還原、自動故障恢復、高可用支持。

?????? 存儲引擎結構

?????? SQLServer 安裝完成后會在SQLServer 配置管理服務器中查看到MSSQLSERVER服務正在運行。

? ? ? ? ?打開登錄數據庫可以看到任何數據庫的數據存儲文件,數據文件以.mdf 結尾的是主文件、以.ndf結尾的是輔助文件同樣也可以存儲數據,ndf可以有多個但是mdf只能有一個,日志是以.ldf結尾的文件,默認不開啟事務日志。

代碼查詢

select * from [Monitors_DB].[dbo].[sysfiles]

如果某個數據創建的物理文件只有一個主數據文件和日志文件,那么所有與數據庫發生的操作數據將存儲于主數據文件中,如果某個數據庫創建的數據有一個主數據文件兩個輔助數據文件,一個日志文件,那么數據存儲時,會發生等值分配,例如:主數據文件設置大小20G、1號輔助數據文件設置大小40G、2號輔助數據文件設置大小60G,如果有一個600M的數據需要存儲在這個數據庫中,那么主數據文件將存儲100M、1號將存儲200M、2號將存儲300M。

?????? MySQL查詢存儲引擎,mysql與SQLserver不一樣,mysql能查看存儲引擎的任何細節,而sqlserver不能查看,有些即使能查看也非常的麻煩,因位它是不開源的。

mysql> select @@default_storage_engine; --查看當前使用的引擎+--------------------------+| @@default_storage_engine |+--------------------------+| InnoDB |+--------------------------+1?row?in?set?(0.00?sec)mysql>?show?engines; --查看mysql所有的存儲引擎類型+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| Engine | Support | Comment | Transactions | XA | Savepoints |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| CSV | YES | CSV storage engine | NO | NO | NO || MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO || MyISAM | YES | MyISAM storage engine | NO | NO | NO || BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO || PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO || MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO || ARCHIVE | YES | Archive storage engine | NO | NO | NO || InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES || FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |mysql> show create table city; --查看表使用的是哪一類存儲引擎| city | CREATE TABLE `city` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `Name` char(35) NOT NULL DEFAULT '', `CountryCode` char(3) NOT NULL DEFAULT '', `District` char(20) NOT NULL DEFAULT '', `Population` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`), KEY `CountryCode` (`CountryCode`), CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) REFERENCES `country` (`Code`))?ENGINE=InnoDB?AUTO_INCREMENT=4080?DEFAULT?CHARSET=latin1?|[root@Focus_Linux_01 ~]# cd /data/mysql/data/ --數據目錄下查看存儲引擎結構[root@Focus_Linux_01 /data/mysql/data]# lltotal 123032-rw-r----- 1 mysql mysql 56 Jun 9 05:21 auto.cnfdrwxr-x---?2?mysql?mysql???????48?Jun?27?22:46?binlog-rw-r----- 1 mysql mysql 111298 Jun 24 07:44 Focus_Linux_01.err-rw-r----- 1 mysql mysql 6 Jul 1 21:29 Focus_Linux_01.pid-rw-r-----?1?mysql?mysql??????654?Jul??1?21:29?ib_buffer_pool-rw-r----- 1 mysql mysql 12582912 Jul 6 22:48 ibdata1-rw-r----- 1 mysql mysql 50331648 Jul 6 22:48 ib_logfile0-rw-r----- 1 mysql mysql 50331648 Jul 6 22:48 ib_logfile1-rw-r----- 1 mysql mysql 12582912 Jul 6 22:20 ibtmp1drwxr-x--- 2 mysql mysql 4096 Jun 9 05:21 mysqldrwxr-x--- 2 mysql mysql 8192 Jun 9 05:21 performance_schema

在mysql的安裝數據目錄下,我們可以看到

開啟了二進制日志:binlog,

錯誤日志文件:??Focus_Linux_01.err

緩沖池文件:ib_buffer_pool

臨時表存儲文件:ibtmp1

系統數據字典信息,UNDO表空間等數據:ibdata1

REDO日志文件、事務日志文件:ib_logfile0~ib_logfile1

進入一個數據 world 查看表的文件,我們可以看到InnoDB引擎中的表會存儲兩個文件,一個是.frm 另一個是.ibd 文件;frm存儲的是表字典和統計信息,ibd存儲的是表的數據行和索引數據。

[root@Focus_Linux_01 /data/mysql/data]# cd world/[root@Focus_Linux_01 /data/mysql/data/world]# lltotal 1416-rw-r----- 1 mysql mysql 8710 Jun 14 10:25 city.frm-rw-r-----?1?mysql?mysql?1015808?Jun?20?09:21?city.ibd

總結

以上是生活随笔為你收集整理的linux sqlserver_SQL Server 与 MySQL存储引擎的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。