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