本文目錄一覽:
- 1、MYSQL 數據庫DATETIME 類型的數據可以用BETWEEN (20190202) AND (20190402) 但 date 類型的數據不行?
- 2、mysql 數據庫可以有多大
- 3、一文總結高並發大數據量下MySQL開發規範「軍規」
- 4、MySQL的數據庫文件有幾種?擴展名及作用分別是什麼?
- 5、MYSQL的概念
- 6、MySQL中數據庫的默認字符集和校對規則有哪些?
MYSQL 數據庫DATETIME 類型的數據可以用BETWEEN (20190202) AND (20190402) 但 date 類型的數據不行?
你說的是時間的格式隱性轉換問題吧? 比如(20190202)和’2019-02-02′ 這個寫法問題吧
不太建議用隱性格式轉換 datetime 和date都是你存啥就是啥
其實也不是需要轉換為字符串類型 只是它的格式必須是匹配而已
to_date 類似函數其實不太建議用 可能會導致索引失效
用操作函數時你可以看下查詢的耗時
參考百度搜索:
58mysql軍規 –簡書
寫一首好SQL很有必要 –博客園
MySQL 中 datetime 和 timestamp 的區別與選擇
mysql 數據庫可以有多大
MySQL 3.22 限制的表大小為4GB。由於在MySQL 3.23 中使用了MyISAM 存儲引擎,最大表尺寸增加到了65536TB(2567 – 1字節)。由於允許的表尺寸更大,MySQL數據庫的最大有效表尺寸通常是由操作系統對文件大小的限制決定的,而不是由MySQL內部限制決定的。
InnoDB 存儲引擎將InnoDB 表保存在一個表空間內,該表空間可由數個文件創建。這樣,表的大小就能超過單獨文件的最大容量。表空間可包括原始磁盤分區,從而使得很大的表成為可能。表空間的最大容量為64TB。
擴展資料
據D.V.B 團隊以及Cmshelp 團隊做CMS 系統評測時的結果來看,MySQL單表大約在2千萬條記錄(4G)下能夠良好運行,經過數據庫的優化後5千萬條記錄(10G)下運行良好。
這對於MySQL是不公平的,那些CMS廠商非但沒有把內核做好反而還在添加很多花哨的功能,最終導致其產品自身負載過低。
他們並沒有針對自身負載效果作出相應的數據庫優化方案及標準,而是繼續保留着複雜的結構造成對MySQL的資源無休止的浪費,最終導致了其負載上的缺陷。
於是他們便充分發揮中國人的傳統優勢——變通:避重就輕的採用了所謂的分表式存儲,雖然在一定程度上緩解了自身負載的缺陷,但是導致了網站後期維護以及資源上的浪費。
用一個不恰當的比喻來形容,MySQL中的的表就像一塊地,單表就相當於利用這塊地蓋高層建築充分利用達到高人員負載,但分表就相當於用這塊地蓋了一間平房。
如果為了達到高人員負載的話那就需要另開地皮達到目的,但是我們要思考,是地不夠,還是他的能力不夠,如此做法讓人感到資源的浪費以及規劃的嚴重缺陷。
一文總結高並發大數據量下MySQL開發規範「軍規」
在互聯網公司中,MySQL是使用最多的數據庫,那麼在並發量大、數據量大的互聯網業務中,如果高效的使用MySQL才能保證服務的穩定呢?根據本人多年運維管理經驗的總結,梳理了一些核心的開發規範,希望能給大家帶來一些幫助。
一、基礎規範
二、庫表設計
問題:使用VARCHAR(5) 和VARCHAR(200) 存儲’hello’的磁盤空間開銷是一樣的,使用更短的列表有什麼優勢嗎?
更大的定義列會消耗更多的內存,因為MySQL通常會分配固定大小的內存塊來保存內部值,尤其是使用內存臨時表進行排序或操作時會特別糟糕
三、索引設計
基本規則:索引不是越多越好,能不添加的索引盡量不要添加,過多的索引會嚴重降低數據插入和更新的效率,並帶來更多的讀寫衝突和死鎖!
示例:假設在表tab中id建立了索引
四、SQL優化
示例:
字段: code varchar(50) NOT NULL COMENT ‘編碼’ #code上建立了索引
SELECT id,name,addr from tab_name where code=10001; 不會使用索引
SELECT id,name,addr from tab_name where code=’10001′; 會使用索引
Select * from table limit 10000,10;
LIMIT原理:
Limit 10000,10 偏移量越大則越慢
Select * from table WHERE id=23423 limit 11; #10+1 (每頁10條)
Select * from table WHERE id=23434 limit 11;
Select * from table WHERE id = ( select id from table limit 10000,1 ) limit 10;
Select * from table INNER JOIN (SELECT id from table limit 10000,10) USING(id)
最後說明:
上述規範是多年MySQL數據庫使用的經驗總結,希望能給大家帶來一些啟發和幫助!
MySQL的數據庫文件有幾種?擴展名及作用分別是什麼?
在MySQL中每一個數據庫都會在定義好(或者默認)的數據目錄下存在一個以數據庫名字命名的文件夾,用來存放該數據庫中各種表數據文件。
1、“.frm”文件 與表相關的元數據(meta)信息都存放在“.frm”文件中,包括表結構的定義信息等。不論是什麼存儲引擎,每一個表都會有一個以表名命名的“.frm”文件。所有的“.frm”文件都存放在所屬數據庫的文件夾下面。
2、“.MYD”文件“ .MYD”文件是MyISAM存儲引擎專用,存放MyISAM表的數據。每一個MyISAM表都會有一個“.MYD”文件與之對應,同樣存放於所屬數據庫的文件夾下,和“.frm”文件在一起。
3、“.MYI”文件 “.MYI”文件也是專屬於MyISAM存儲引擎的,主要存放MyISAM表的索引相關信息。對於MyISAM存儲來說,可以被cache的內容主要就是來源於“.MYI”文件中。每一個MyISAM表對應一個“.MYI”文件,存放於位置和“.frm”以及“.MYD”一樣。
管理工具:
可以使用命令行工具管理 MySQL 數據庫(命令 mysql 和 mysqladmin),也可以從 MySQL 的網站下載圖形管理工具 MySQL Administrator, MySQL Query Browser 和 MySQL Workbench。
phpMyAdmin是由 php 寫成的 MySQ L資料庫系統管理程程序,讓管理者可用 Web 界面管理 MySQL 資料庫。
phpMyBackupPro也是由 PHP 寫成的,可以透過 Web 界面創建和管理數據庫。它可以創建偽 cronjobs,可以用來自動在某個時間或周期備份 MySQL 數據庫。另外,還有其他的 GUI 管理工具,例如 mysql-front 以及 ems mysql manager, navicat等等。
以上內容參考:百度百科-mySQL
MYSQL的概念
MySQL是一個關係型數據庫管理系統,由瑞典 MySQL AB 公司開發,目前屬於 Oracle 旗下公司。MySQL 最流行的關係型數據庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件之一。
MySQL 是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。MySQL 所使用的 SQL 語言是用於訪問數據庫的最常用標準化語言。MySQL 軟件採用了雙授權政策,它分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。由於其社區版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發環境。
MySQL中數據庫的默認字符集和校對規則有哪些?
1. ASCII
用途:用來映射簡單的單字節字符,比如大小寫英文字母、阿拉伯數字、常用的標點符、運算符、控制字符等。
編碼範圍:U+0000 – U+007F
注意:對於用這類字符的場景夠用了,但是卻無法表達比如漢字,日文等編碼。
2. UNICODE
用途:用來映射包含 ASCII 以內的其他的所有字符。
編碼範圍:U+0000 – U+10FFFF
注意:ASCII 是 UNICODE 的子集,ASCII 編碼的字符可以無損轉換為 UNICODE 編碼的字符。
MySQL 常用字符集
1. Latin1
Latin1 是 cp1252 或者 ISO-8859-1 的別名。ISO-8859-1 編碼是單字節編碼,向下兼容 ASCII。
編碼範圍:U+0000 – U+00FF
ISO-8859-1 收錄的字符除 ASCII 收錄的字符外,還包括西歐語言、希臘語、泰語、阿拉伯語、希伯來語對應的文字符號。
單字節內的空間都被 ISO-8859-1 編碼佔用,所以能夠用 ISO-8859-1 編碼存儲、傳輸其他任何編碼的字節流。
比如把一個 Utf8mb4 的編碼或者 GBK 的編碼存入 Latin1,不會有任何問題。因為 Latin1 保留了原始的字節流,這也就是 MySQL 長期以來把 Latin1 做默認字符集的原因。
但是由於 Latin1 對任何字符都存放字節流,造成了字符個數的浪費。
比如:
CHAR(10) CHARACTER SET LATIN1;CHAR(10) CHARACTER SET UTF8;
該字段中存儲字符個數 UTF8 是 Latin1 的三倍!!!
2. GB18030
GB18030 是中國官方標準字符集,向前兼容 GBK、GB2312,是這兩個的超集。用 1、2、4 個字節分別表示一個符號。比如對一般中文字符,默認是用兩個字節編碼存儲。Windows 系統,默認用的就是 GB18030。
若只是存儲中文字符,那 GB18030 最佳。
原因有兩點:
1)佔用空間小,比如比 UTF8 小。
2)存儲的漢字根據拼音來排序,檢索快。
3. UTF8
UTF8 是 Unicode 的編碼實現,可以存儲 UNICODE 編碼對應的任何字符, 這也是使用最多的一種編碼。最大的特點就是變長的編碼方式,用 1 到 4 個字節表示一個符號,可以根據不同的符號編碼字節長度。
字母或數字用 1 字節,漢字用 3 字節,emoji 表情符號用 4 字節。UTF8 字符集目前是使用最廣泛的。
注意!MySQL 里常說的 UTF8 是 UTF8MB3 的別名,UTF8MB3 是 UTF8MB4 的子集,UTF8MB4 才是真正的 4 字節 UTF8 字符集!
UTF8MB3 表示最大支持 3 個字節存儲字符,UTF8MB4 表示最大 4 個字節存儲字符。根據實際需要和未來展望,MySQL 8.0 已經默認用 UTF8MB4 基礎字符集。
原創文章,作者:BVUES,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/129884.html