免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

mysql容量怎么刪除 mysql大數據量刪除

MySQL緩存

mysql 開啟查詢緩存可以有兩種方法來開啟一種是使用set命令來進行開啟,另一種是直接修改my.ini文件來直接設置都是非常的簡單的哦。

公司主營業務:成都做網站、網站制作、成都外貿網站建設、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。成都創新互聯公司是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創新互聯公司推出普陀免費做網站回饋大家。

開啟緩存,設置緩存大小,具體實施如下:

windows下是my.ini,linux下是my.cnf;

在配置文件的最后追加上:

需要重啟mysql生效;

b) 開啟緩存,兩種方式:

a)使用mysql命令:

如果報錯:

Query cache is disabled; restart the server with query_cache_type=1 to enable it,還是老老實實的該配置文件,然后重啟吧,原因如下:

查看是否設置成功

show variables like "%query_cache%" 查看是否設置成功:

當然如果你的數據表有更新怎么辦,沒關系mysql默認會和這個表有關系的緩存刪掉,下次查詢的時候會直接讀表然后再緩存

下面是一個簡單的例子:

以上的相關內容就是對mysql緩存查詢和設置的介紹,望你能有所收獲。

一般,我們會把 query_cache_type 設置為 ON,默認情況下應該是ON

query_cache_type有3個值 0代表關閉查詢緩存OFF,1代表開啟ON,2(DEMAND)代表當sql語句中有SQL_CACHE關鍵詞時才緩存,如:

這樣 當我們執行 select id,name from tableName; 這樣就會用到查詢緩存。

①在 query_cache_type 打開的情況下,如果你不想使用緩存,需要指明

select sql_no_cache id,name from tableName;

②當sql中用到mysql函數,也不會緩存

當然也可以禁用查詢緩存: mysql set session query_cache_type=off;

上面的顯示,表示設置查詢緩存是可用的。

表示查詢緩存大小,也就是分配內存大小給查詢緩存,如果你分配大小為0,

那么 第一步 和 第二步 起不到作用,還是沒有任何效果。

上面是 mysql6.0設置默認的,之前的版本好像默認是0的,那么就要自己設置下。

設置

這里是設置1M左右,900多K。

再次查看下:

顯示我們設置新的大小,表示設置成功。

例如: 如果查詢結果很大, 也緩存????這個明顯是不可能的。

MySql 可以設置一個最大的緩存值,當你查詢緩存數結果數據超過這個值就不會

進行緩存。缺省為1M,也就是超過了1M查詢結果就不會緩存。

這個是默認的數值,如果需要修改,就像設置緩存大小一樣設置,使用set

重新指定大小。

好了,通過4個步驟就可以 打開了查詢緩存,具體值的大小和查詢的方式 這個因不同

的情況來指定了。

mysql查詢緩存相關變量

MySQL 提供了一系列的 Global Status 來記錄 Query Cache 的當前狀態,具體如下:

Qcache_free_blocks:目前還處于空閑狀態的 Query Cache 中內存 Block 數目

Qcache_free_memory:目前還處于空閑狀態的 Query Cache 內存總量

Qcache_hits:Query Cache 命中次數

Qcache_inserts:向 Query Cache 中插入新的 Query Cache 的次數,也就是沒有命中的次數

Qcache_lowmem_prunes:當 Query Cache 內存容量不夠,需要從中刪除老的 Query Cache 以給新的 Cache 對象使用的次數

Qcache_not_cached:沒有被 Cache 的 SQL 數,包括無法被 Cache 的 SQL 以及由于 query_cache_type 設置的不會被 Cache 的 SQL

Qcache_queries_in_cache:目前在 Query Cache 中的 SQL 數量

Qcache_total_blocks:Query Cache 中總的 Block 數量

檢查是否從查詢緩存中受益的最簡單的辦法就是檢查緩存命中率

當服務器收到SELECT 語句的時候,Qcache_hits 和Com_select 這兩個變量會根據查詢緩存

的情況進行遞增

查詢緩存命中率的計算公式是:Qcache_hits/(Qcache_hits + Com_select)。

query_cache_min_res_unit的配置是一柄”雙刃劍”,默認是4KB,設置值大對大數據查詢有好處,但如果你的查詢都是小數據 查詢,就容易造成內存碎片和浪費。

查詢緩存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%

如果查詢緩存碎片率超過20%,可以用FLUSH QUERY CACHE整理緩存碎片,或者試試減小query_cache_min_res_unit,如果你的查詢都是小數據量的話。

查詢緩存利用率 = (query_cache_size - Qcache_free_memory) / query_cache_size * 100%

查詢緩存利用率在25%以下的話說明query_cache_size設置的過大,可適當減小;查詢緩存利用率在80%以上而且 Qcache_lowmem_prunes 50的話說明query_cache_size可能有點小,要不就是碎片太多。

查詢緩存命中率 = (Qcache_hits - Qcache_inserts) / Qcache_hits * 100%

示例服務器 查詢緩存碎片率 = 20.46%,查詢緩存利用率 = 62.26%,查詢緩存命中率 = 1.94%,命中率很差,可能寫操作比較頻繁吧,而且可能有些碎片。

查詢緩存可以看做是SQL文本和查詢結果的映射。如果第二次查詢的SQL和第一次查詢的SQL完全相同(注意必須是完全相同,即使多一個空格或者大小寫不同都認為不同)且開啟了查詢緩存,那么第二次查詢就直接從查詢緩存中取結果,可以通過下面的SQL來查看緩存命中次數(是個累加值):

另外即使完全相同的SQL,如果使用不同的字符集、不同的協議等也會被認為是不同的查詢而分別進行緩存。

在表的結構或數據發生改變時,查詢緩存中的數據不再有效。有這些INSERT、UPDATE、 DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE會導致緩存數據失效。所以查詢緩存適合有大量相同查詢的應用,不適合有大量數據更新的應用。

可以使用下面三個SQL來清理查詢緩存:

1、FLUSH QUERY CACHE; // 清理查詢緩存內存碎片。

2、RESET QUERY CACHE; // 從查詢緩存中移出所有查詢。

3、FLUSH TABLES; //關閉所有打開的表,同時該操作將會清空查詢緩存中的內容。

Query Cache是MySQL Server層的一個非常好的特性,對于小數據集或訪問量非常集中的應用場景,有非常好的性能提升,但是Query Cache引入了一些新的問題,而且大部分場景下比較雞肋,官方打算棄用了

參考:

mysql刪除表中某些數據,但這個刪除動作不記錄到日志中的方法

把數據備份到另一張表

然后TRUNCATE TABLE

再把備份的數據插入回來 where條件過濾掉想刪的數據

然后drop 備份表

MySQL小技巧:刪除大表數據時,drop table執行不下去怎么辦

最近遇到了一個坑,MySQL數據庫服務器硬盤容量告警,而且因為非技術原因,還不能追加硬盤。

通過監控發現,磁盤IO一直100%。直接影響就是系統處理時間越來越長,接口響應耗時也越來越多。

經過分析,發現mysql業務數據庫里有好幾張大表,而且這幾張大表行數都在5000萬以上,文件大小都在100G和150G之間。

因為這些表都是備份表,第一反應就是找DBA直接清理掉這些表。 潛意識里以為drop table 和 truncate table效率很高,都會快速完成,但事實上不是。 但意外的是,在執行drop table時,直接導致數據庫掛起了,而且還發生了主從切換。

第一次嘗試失敗。

第一次失敗反應出來的問題是,如果數據文件過大,drop table操作也得慎用。

那我們可以在drop table之前,想辦法把數據文件邏輯清空。比如Linux硬連接的方式,具體步驟如下(假如目標表名是test):

ln test.ibd test.ibd.hdlk

drop table test;

此時,磁盤上真實的數據其實沒刪除,但數據庫里的表,已經刪除了。

rm test.ibd.hdlk

到此,數據就能快速清理成功了。

如何用MYSQL函數刪除字符串最后幾個字符

字符串或串(String)是由零個或多個字符組成的有限序列。一般記為 s='a1a2???an'(n=0)。它是編程語言中表示文本的數據類型。

通常以串的整體作為操作對象,如:在串中查找某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。兩個字符串相等的充要條件是:長 度相等,并且各個對應位置上的字符都相等。設p、q是兩個串,求q在p中首次出現的位置的運算叫做模式匹配。串的兩種最基本的存儲方式是順序存儲方式和鏈 接存儲方式。

下面我們來看看MySQL中的字符串函數

假如結果的長度大于 max_allowed_packet 系統變量的最大值時,字符串值函數的返回值為NULL。

對于在字符串位置操作的函數,第一個位置的編號為 1。

◆ ASCII(str)

返回值為字符串str 的最左字符的數值。假如str為空字符串,則返回值為 0 。假如str 為NULL,則返回值為 NULL。 ASCII()用于帶有從 0到255的數值的字符。

mysql SELECT ASCII('2');

- 50

mysql SELECT ASCII(2);

- 50

mysql SELECT ASCII('dx');

- 100

見 ORD()函數。

◆ BIN(N)

返回值為N的二進制值的字符串表示,其中  N 為一個longlong (BIGINT) 數字。這等同于 CONV(N,10,2)。假如N 為NULL,則返回值為 NULL。

mysql SELECT BIN(12);

- '1100'

◆ BIT_LENGTH(str)

返回值為二進制的字符串str 長度。

mysql SELECT BIT_LENGTH('text');

- 32

◆ CHAR(N,... [USING charset])

CHAR()將每個參數N理解為一個整數,其返回值為一個包含這些整數的代碼值所給出的字符的字符串。NULL值被省略。

mysql SELECT CHAR(77,121,83,81,'76');

- 'MySQL'

mysql SELECT CHAR(77,77.3,'77.3');

- 'MMM'

大于 255的CHAR()參數被轉換為多結果字符。 例如,CHAR(256) 相當于 CHAR(1,0), 而CHAR(256*256) 則相當于 CHAR(1,0,0):

mysql SELECT HEX(CHAR(1,0)), HEX(CHAR(256));

+----------------+----------------+

| HEX(CHAR(1,0)) | HEX(CHAR(256)) |

+----------------+----------------+

| 0100 | 0100 |

+----------------+----------------+

mysql SELECT HEX(CHAR(1,0,0)), HEX(CHAR(256*256));

+------------------+--------------------+

| HEX(CHAR(1,0,0)) | HEX(CHAR(256*256)) |

+------------------+--------------------+

| 010000 | 010000 |

+------------------+--------------------+

CHAR()的返回值為一個二進制字符串。可選擇使用USING語句產生一個給出的字符集中的字符串:

mysql SELECT CHARSET(CHAR(0x65)), CHARSET(CHAR(0x65 USING utf8));

mysql SELECT CHARSET(CHAR(0x65)), CHARSET(CHAR(0x65 USING utf8));

+---------------------+--------------------------------+

| CHARSET(CHAR(0x65)) | CHARSET(CHAR(0x65 USING utf8)) |

+---------------------+--------------------------------+

| binary| utf8 |

+---------------------+--------------------------------+

如果 USING已經產生,而結果字符串不符合給出的字符集,則會發出警告。同樣,如果嚴格的SQL模式被激活,則CHAR()的結果會成為 NULL。

◆ CHAR_LENGTH(str)

返回值為字符串str 的長度,長度的單位為字符。一個多字節字符算作一個單字符。對于一個包含五個二字節字符集, LENGTH()返回值為 10, 而CHAR_LENGTH()的返回值為5。

◆ CHARACTER_LENGTH(str)

CHARACTER_LENGTH()是CHAR_LENGTH()的同義詞。

◆ COMPRESS(string_to_compress)

壓縮一個字符串。這個函數要求 MySQL已經用一個諸如zlib的壓縮庫壓縮過。 否則,返回值始終是NULL。UNCOMPRESS() 可將壓縮過的字符串進行解壓縮。

mysql SELECT LENGTH(COMPRESS(REPEAT('a',1000)));

- 21

mysql SELECT LENGTH(COMPRESS(''));

- 0

mysql SELECT LENGTH(COMPRESS('a'));

- 13

mysql SELECT LENGTH(COMPRESS(REPEAT('a',16)));

- 15

壓縮后的字符串的內容按照以下方式存儲:

空字符串按照空字符串存儲。

非空字符串未壓縮字符串的四字節長度進行存儲(首先為低字節),后面是壓縮字符串。如果字符串以空格結尾,就會在后加一個"."號,以防止當結果值是存儲 在CHAR或VARCHAR類型的字段列時,出現自動把結尾空格去掉的現象。(不推薦使用 CHAR 或VARCHAR 來存儲壓縮字符串。最好使用一個 BLOB 列代替)。

◆ CONCAT(str1,str2,...)

返回結果為連接參數產生的字符串。如有任何一個參數為NULL ,則返回值為 NULL。或許有一個或多個參數。如果所有參數均為非二進制字符串,則結果為非二進制字符串。如果自變量中含有任一二進制字符串,則結果為一個二進制字符 串。一個數字參數被轉化為與之相等的二進制字符串格式;若要避免這種情況,可使用顯式類型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col)

mysql SELECT CONCAT('My', 'S', 'QL');

- 'MySQL'

mysql SELECT CONCAT('My', NULL, 'QL');

- NULL

mysql SELECT CONCAT(14.3);- '14.3'

◆ CONCAT_WS(separator,str1,str2,...)

CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一個參數是其它參數的分隔符。分隔符的位置放在要連接的兩個字符串之間。分隔符可以是一個字符串,也可以是其它參 數。如果分隔符為 NULL,則結果為 NULL。函數會忽略任何分隔符參數后的 NULL 值。

mysql SELECT CONCAT_WS(',','First name','Second name','Last Name');

- 'First name,Second name,Last Name'

mysql SELECT CONCAT_WS(',','First name',NULL,'Last Name');

- 'First name,Last Name'

CONCAT_WS()不會忽略任何空字符串。 (然而會忽略所有的 NULL)。

◆ CONV(N,from_base,to_base)

不同數基間轉換數字。返回值為數字的N字符串表示,由from_base基轉化為 to_base 基。如有任意一個參數為NULL,則返回值為 NULL。自變量 N 被理解為一個整數,但是可以被指定為一個整數或字符串。最小基數為 2 ,而最大基數則為 36。 If to_base 是一個負數,則 N 被看作一個帶符號數。否則, N 被看作無符號數。 CONV() 的運行精確度為 64比特。

mysql SELECT CONV('a',16,2);

- '1010'

mysql SELECT CONV('6E',18,8);

- '172'

mysql SELECT CONV(-17,10,-18);

- '-H'

mysql SELECT CONV(10+'10'+'10'+0xa,10,10);

- '40'

◆ ELT(N,str1,str2,str3,...)

若N = 1,則返回值為  str1 ,若N = 2,則返回值為 str2 ,以此類推。若N 小于1或大于參數的數目,則返回值為 NULL 。 ELT() 是  FIELD()的補數。

mysql SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo');

- 'ej'

mysql SELECT ELT(4, 'ej', 'Heja', 'hej', 'foo');

- 'foo'

◆ EXPORT_SET(bits,on,off[,separator[,number_of_bits]])

返回值為一個字符串,其中對于bits值中的每個位組,可以得到一個 on 字符串,而對于每個清零比特位,可以得到一個off 字符串。bits 中的比特值按照從右到左的順序接受檢驗 (由低位比特到高位比特)。字符串被分隔字符串分開(默認為逗號‘,’),按照從左到右的順序被添加到結果中。number_of_bits 會給出被檢驗的二進制位數 (默認為 64)。

mysql SELECT EXPORT_SET(5,'Y','N',',',4);

- 'Y,N,Y,N'

mysql SELECT EXPORT_SET(6,'1','0',',',10);

- '0,1,1,0,0,0,0,0,0,0'

◆ FIELD(str,str1,str2,str3,...)

返回值為str1, str2, str3,……列表中的str 指數。在找不到str 的情況下,返回值為 0 。

如果所有對于FIELD() 的參數均為字符串,則所有參數均按照字符串進行比較。如果所有的參數均為數字,則按照數字進行比較。否則,參數按照雙倍進行比較。

如果str 為NULL,則返回值為0 ,原因是NULL不能同任何值進行同等比較。FIELD() 是ELT()的補數。

mysql SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');

- 2

mysql SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');

- 0

◆ FIND_IN_SET(str,strlist)

假如字符串str 在由N 子鏈組成的字符串列表strlist 中, 則返回值的范圍在 1 到 N 之間。一個字符串列表就是一個由一些被‘,’符號分開的自鏈組成的字符串。如果第一個參數是一個常數字符串,而第二個是type SET列,則 FIND_IN_SET() 函數被優化,使用比特計算。如果str不在strlist 或strlist 為空字符串,則返回值為 0 。如任意一個參數為NULL,則返回值為 NULL。 這個函數在第一個參數包含一個逗號(‘,’)時將無法正常運行。

mysql SELECT FIND_IN_SET('b','a,b,c,d');

- 2

◆ FORMAT(X,D)

將number X設置為格式 '#,###,###.##', 以四舍五入的方式保留到小數點后D位, 而返回結果為一個字符串。

◆ HEX(N_or_S)

如果N_OR_S 是一個數字,則返回一個 十六進制值 N 的字符串表示,在這里, N 是一個longlong (BIGINT)數。這相當于 CONV(N,10,16)。

如果N_OR_S 是一個字符串,則返回值為一個N_OR_S的十六進制字符串表示, 其中每個N_OR_S 里的每個字符被轉化為兩個十六進制數字。

mysql SELECT HEX(255);

- 'FF'

mysql SELECT 0x616263;

- 'abc'

mysql SELECT HEX('abc');

- 616263

◆ INSERT(str,pos,len,newstr)

返回字符串 str, 其子字符串起始于 pos 位置和長期被字符串 newstr取代的len 字符。  如果pos 超過字符串長度,則返回值為原始字符串。假如len的長度大于其它字符串的長度,則從位置pos開始替換。若任何一個參數為null,則返回值為 NULL。

mysql SELECT INSERT('Quadratic', 3, 4, 'What');

- 'QuWhattic'

mysql SELECT INSERT('Quadratic', -1, 4, 'What');

- 'Quadratic'

mysql SELECT INSERT('Quadratic', 3, 100, 'What');

- 'QuWhat'

這個函數支持多字節字元。

◆ INSTR(str,substr)

返回字符串 str 中子字符串的第一個出現位置。這和LOCATE()的雙參數形式相同,除非參數的順序被顛倒。

mysql SELECT INSTR('foobarbar', 'bar');

- 4

mysql SELECT INSTR('xbar', 'foobar');

- 0

這個函數支持多字節字元,并且只有當至少有一個參數是二進制字符串時區分大小寫。

◆ LCASE(str)

LCASE() 是 LOWER()的同義詞。◆ LEFT(str,len)

返回從字符串str 開始的len 最左字符。

mysql SELECT LEFT('foobarbar', 5);

- 'fooba'

◆ LENGTH(str)

返回值為字符串str 的長度,單位為字節。一個多字節字符算作多字節。這意味著 對于一個包含5個2字節字符的字符串, LENGTH() 的返回值為 10, 而 CHAR_LENGTH()的返回值則為5。

mysql SELECT LENGTH('text');

- 4

◆ LOAD_FILE(file_name)

讀取文件并將這一文件按照字符串的格式返回。 文件的位置必須在服務器上,你必須為文件制定路徑全名,而且你還必須擁有FILE 特許權。文件必須可讀取,文件容量必須小于 max_allowed_packet字節。

若文件不存在,或因不滿足上述條件而不能被讀取, 則函數返回值為 NULL。

mysql UPDATE tbl_name

SET blob_column=LOAD_FILE('/tmp/picture')

WHERE id=1;

◆ LOCATE(substr,str) , LOCATE(substr,str,pos)

第一個語法返回字符串 str中子字符串substr的第一個出現位置。第二個語法返回字符串 str中子字符串substr的第一個出現位置, 起始位置在pos。如若substr 不在str中,則返回值為0。

mysql SELECT LOCATE('bar', 'foobarbar');

- 4

mysql SELECT LOCATE('xbar', 'foobar');

- 0

mysql SELECT LOCATE('bar', 'foobarbar',5);

- 7

這個函數支持多字節字元,并且只有當至少有一個參數是二進制字符串時區分大小寫。

mysql 內存表 滿了 怎么處理

使用

unbuffered

cursor

可以避免內存問題。

cursor

默認使用

buffered

模式。這種模式會把所有結果集返回并載入內存。如果結果集很大的話,內存會爆。

unbuffered

cursor

是每次只將下一行結果返回,內存占用很小。不過這種模式缺點很多,所以沒有作為默認的模式。

如何解決mysql delete表數據后,表空間大小不變的問題

這是因為刪除操作后在數據文件中留下碎片所致。DELETE只是將數據標識位刪除,并沒有整理數據文件,當插入新數據后,會再次使用這些被置為刪除標識的記錄空間。另外實際操作過程中還發現這個問題還存在兩種情況。

(1)當DELETE后面跟條件的時候,則就會出現這個問題。如:

delete from table_name where 條件

刪除數據后,數據表占用的空間大小不會變。

(2)不跟條件直接delete的時候。如:

delete from table_name

清除了數據,同時數據表的空間也會變為0。

這就存在了一個問題,在網站的實際運行過程中。經常會存在這樣的附帶條件刪除數據的操作行為。天長日久,這不就在數據庫中浪費了很多的空間嗎。這個時候我們該使用 OPTIMIZE TABLE 指令對表進行優化了。

如何使用 OPTIMIZE 以及在什么時候該使用 OPTIMIZE 指令呢?

命令語法:OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

最簡單的:optimize table phpernote_article;

如果您已經刪除了表的一大部分,或者如果您已經對含有可變長度行的表(含有VARCHAR, BLOB或TEXT列的表)進行了很多更改,則應使用

OPTIMIZE TABLE。被刪除的記錄被保持在鏈接清單中,后續的INSERT操作會重新使用舊的記錄位置。您可以使用OPTIMIZE

TABLE來重新 利用未使用的空間,并整理數據文件的碎片。

在多數的設置中,您根本不需要運行OPTIMIZE TABLE。即使您對可變長度的行進行了大量的更新,您也不需要經常運行,每周一次或每月一次即可,只對特定的表運行。

OPTIMIZE TABLE只對MyISAM, BDB和InnoDB表起作用。

注意,在OPTIMIZE TABLE運行過程中,MySQL會鎖定表。因此,這個操作一定要在網站訪問量較少的時間段進行。

TRUNCATE

其語法結構為:

TRUNCATE [TABLE] tbl_name

這里簡單的給出個示例,

我想刪除 friends 表中所有的記錄,可以使用如下語句:

truncate table friends;

delete的效果有點像將mysql表中所有記錄一條一條刪除到刪完,而truncate相當于保留mysql表的結構,重新創建了這個表,所有的狀態都相當于新表,這樣空間就減下來了。

好了,當然對于我們網站不可能使用truncate table來清除了,因這樣之后所有數據都丟失了,這樣肯定是不合理的清除了,我們必須使用delete來刪除,然后再來修復優化表了哦。

分享名稱:mysql容量怎么刪除 mysql大數據量刪除
網址分享:http://m.newbst.com/article46/hjheeg.html

成都網站建設公司_創新互聯,為您提供軟件開發網頁設計公司網站收錄外貿建站建站公司ChatGPT

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設