mysql用datetime還是timestamp 如何構(gòu)建高性能MySQL?
如何構(gòu)建高性能MySQL?可以從以下幾個角度來說。第一,設(shè)計(jì)時間。設(shè)計(jì)時有幾個方面可以優(yōu)化。A.表格引擎的選擇。mysql最大的一個特點(diǎn)就是可以根據(jù)表格選擇自己的表格引擎。不同引擎的區(qū)別在于事務(wù)支持的
如何構(gòu)建高性能MySQL?
可以從以下幾個角度來說。
第一,設(shè)計(jì)時間。
設(shè)計(jì)時有幾個方面可以優(yōu)化。
A.表格引擎的選擇。
mysql最大的一個特點(diǎn)就是可以根據(jù)表格選擇自己的表格引擎。不同引擎的區(qū)別在于事務(wù)支持的粒度、數(shù)據(jù)存儲格式和模式等。mysql事務(wù)的控制級別從細(xì)到粗依次是行鎖、間隙鎖、頁鎖和表鎖。支持的鎖粒度越細(xì),理論上語句的執(zhí)行速度就越慢。Innodb支持行鎖定,所以curd相對比myisam慢。當(dāng)存儲一些不是特別重要、允許有錯誤或者不經(jīng)常更新的數(shù)據(jù)時,可以選擇Myisam。例如保存日志和一些配置數(shù)據(jù),例如國家行政區(qū)劃數(shù)據(jù)。mysql的默認(rèn)引擎是innodb。很多人想都沒想就選擇了默認(rèn)引擎,這是個壞習(xí)慣。
B.垂直分割和水平分割,分區(qū)和表格分割。
根據(jù)對數(shù)據(jù)增長的預(yù)測,可以考慮對數(shù)據(jù)進(jìn)行劃分。細(xì)分的思路有兩個緯度,一個是縱向細(xì)分,一個是橫向細(xì)分。
垂直分割就是把邏輯上屬于一個表的字段分割成多個表來設(shè)計(jì)。這樣可以減少單個表的數(shù)據(jù)量,提高查詢速度。查詢通常不需要找出所有字段。如果所有字段都在一個表中,會影響查詢速度。可以根據(jù)實(shí)際情況對查詢頻率相同的字段進(jìn)行分類,然后對表進(jìn)行相應(yīng)的劃分。例如,用戶列表、帳戶密碼和一些其他信息。許多人 他的習(xí)慣是設(shè)計(jì)手表。但在一些用戶活躍度較高的系統(tǒng)中,將賬號密碼單獨(dú)設(shè)計(jì)成表格是一個不錯的選擇。
橫向分段是將不同行的數(shù)據(jù)按照一定的規(guī)則放入不同的數(shù)據(jù)實(shí)體中。mysql的橫向劃分有兩種分區(qū)和表劃分,分區(qū)是mysql的另一個重要特性。分區(qū)是將數(shù)據(jù)存儲在不同的塊中,但仍在同一個表中,所以對程序不敏感。分表就是設(shè)計(jì)多個結(jié)構(gòu)相同的表。對于mysql來說,這些表是不相關(guān)的,但是對于程序來說,它們在邏輯上被認(rèn)為是同一個表,這就需要程序在執(zhí)行語句之前選擇表。這里不討論分區(qū)與子表的區(qū)別。
C.指數(shù)
大多數(shù)學(xué)過mysql的人都知道索引,但一個被忽視的事實(shí)是,索引越多越好。索引太多會影響插入和更新的速度。索引的設(shè)計(jì)應(yīng)該只給出高頻查詢,有些低頻查詢不需要索引。對于特定的索引類型,不會展開索引方法。值得一提的是,設(shè)計(jì)時可能與實(shí)際運(yùn)行時不一致,可以找出那些慢的查詢,然后用
MySQL數(shù)據(jù)包括?
Mysql數(shù)據(jù)類型有:BOOL,TINY INT,INT,BIG INT,F(xiàn)LOAT,DOUBLE,DECIMAL,CHAR,VARCHAR,TINY TEXT,TEXT,Date,DateTime,TimeStamp,Year等等。
首先,MySQL數(shù)據(jù)類型
主要包括以下五類:
整數(shù)類型:BIT,BOOL,TINY INT,SMALL INT,MEDIUM INT,INT,BIG INT。
浮點(diǎn)類型:浮點(diǎn)、雙精度、十進(jìn)制。
字符串類型:CHAR,VARCHAR,TINY TEXT,TEXT,MEDIUM TEXT,LONGTEXT,TINY BLOB,BLOB,MEDIUM BLOB,LONG BLOB。
日期類型:日期、日期時間、時間戳、時間、年份。
其他數(shù)據(jù)類型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等。