HOME 首頁
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運營
CASE 服務(wù)案例
NEWS 熱點資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    服務(wù)器如何存儲大量圖片(服務(wù)器如何存儲大量圖片視頻)

    發(fā)布時間:2023-04-19 07:23:56     稿源: 創(chuàng)意嶺    閱讀: 57        

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于服務(wù)器如何存儲大量圖片的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。

    開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端

    官網(wǎng):https://ai.de1919.com。

    創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008

    本文目錄:

    服務(wù)器如何存儲大量圖片(服務(wù)器如何存儲大量圖片視頻)

    一、sql sever中照片用什么數(shù)據(jù)類型?

    sql sever中照片用image數(shù)據(jù)類型。

    sql sever數(shù)據(jù)庫中的Image數(shù)據(jù)類型可以進(jìn)行數(shù)據(jù)圖片的存儲。保存的是二進(jìn)制字節(jié),所以寫入sql sever數(shù)據(jù)庫Image數(shù)據(jù)類型時,sql sever數(shù)據(jù)庫自動將圖片轉(zhuǎn)換成二進(jìn)制字節(jié)后存入。讀取的時候,將二進(jìn)制再轉(zhuǎn)換成圖片從sql sever數(shù)據(jù)庫中輸出顯示到頁面或者程序中。

    服務(wù)器如何存儲大量圖片(服務(wù)器如何存儲大量圖片視頻)

    擴(kuò)展資料:

    如果SQL Server是缺省安裝時, IMAGE類型字段是有長度限制,用來存儲圖片大小不超過2g的圖片。缺點是占用了很大的數(shù)據(jù)存儲空間。但是對于之前的存儲物理路徑來說讀取圖片和存儲圖片方便了很多。

    一般開發(fā)中,照片等二進(jìn)制的文件并不保存在數(shù)據(jù)庫中。而是保存在服務(wù)器的特定目錄中,然后在數(shù)據(jù)庫中記錄一下這個具體路徑和文件名。

    二、我用2個項目操作一個數(shù)據(jù)庫,這2個項目部署在不同的服務(wù)器上,請問對于圖片改怎么保存

    圖片放本地文件夾里,加載速度最快。

    三、網(wǎng)絡(luò)上發(fā)博客時,博客中的圖片是怎么保存在服務(wù)器的數(shù)據(jù)庫的?圖片怎么保存在數(shù)據(jù)庫中?

    圖片 一般都是保存在空間里 ,只把圖片路徑保存在數(shù)據(jù)庫里 。

    四、MySQL里存儲圖片的是什么數(shù)據(jù)類型

    背景

    MySQL 一直以來都有 TEXT、BLOB 等類型用來存儲圖片、視頻等大對象信息。比如一張圖片,隨便一張都 5M 以上。視頻也是,隨便一部視頻就是 2G 以上。

    假設(shè)用 MySQL 來存放電影視頻等信息,一部是 2G,那么存儲 1000 部就是 2TB,2TB 也就是 1000 條記錄而已,但是對數(shù)據(jù)庫性能來說,不僅僅是看記錄數(shù)量,更主要的還得看占用磁盤空間大小??臻g大了,所有以前的經(jīng)驗啥的都失效了。

    所以一般來說存放這類信息,也就是存儲他們的存放路徑,至于文件本身存放在哪里,那這就不是數(shù)據(jù)庫考慮的范疇了。數(shù)據(jù)庫只關(guān)心怎么來的快,怎么來的小。

    舉例

    雖然不推薦 MySQL 這樣做,但是也得知道 MySQL 該怎么做才行,做到心里有數(shù)。比如下面一張微信圖片,大概 5M 的樣子。

    root@ytt:/var/lib/mysql-files# ls -sihl 微信圖片_20190711095019.jpg274501 5.4M -rw-r--r-- 1 root root 5.4M Jul 11 07:17 微信圖片_20190711095019.jpg

    拷貝 100 份這樣的圖片來測試

    • root@ytt:/var/lib/mysql-files# for i in `seq 1 100`; do cp 微信圖片_20190711095019.jpg "$i".jpg;done;

    • root@ytt:/var/lib/mysql-files# ls

    • 100.jpg   17.jpg  25.jpg  33.jpg  41.jpg  4.jpg   58.jpg  66.jpg  74.jpg  82.jpg  90.jpg  99.jpg  f8.tsv

    • 10.jpg    18.jpg  26.jpg  34.jpg  42.jpg  50.jpg  59.jpg  67.jpg  75.jpg  83.jpg  91.jpg  9.jpg   微信圖片_20190711095019.jpg

    • 1111.jpg  19.jpg  27.jpg  35.jpg  43.jpg  51.jpg  5.jpg   68.jpg  76.jpg  84.jpg  92.jpg  f1.tsv

    • 11.jpg    1.jpg   28.jpg  36.jpg  44.jpg  52.jpg  60.jpg  69.jpg  77.jpg  85.jpg  93.jpg  f2.tsv

    • 12.jpg    20.jpg  29.jpg  37.jpg  45.jpg  53.jpg  61.jpg  6.jpg   78.jpg  86.jpg  94.jpg  f3.tsv

    • 13.jpg    21.jpg  2.jpg   38.jpg  46.jpg  54.jpg  62.jpg  70.jpg  79.jpg  87.jpg  95.jpg  f4.tsv

    • 14.jpg    22.jpg  30.jpg  39.jpg  47.jpg  55.jpg  63.jpg  71.jpg  7.jpg   88.jpg  96.jpg  f5.tsv

    • 15.jpg    23.jpg  31.jpg  3.jpg   48.jpg  56.jpg  64.jpg  72.jpg  80.jpg  89.jpg  97.jpg  f6.tsv

    • 16.jpg    24.jpg  32.jpg  40.jpg  49.jpg  57.jpg  65.jpg  73.jpg  81.jpg  8.jpg   98.jpg  f7.tsv

    • 我們建三張表,分別用 LONGBLOB、LONGTEXT 和 VARCHAR 來存儲這些圖片信息

    • mysql> show create table tt_image1G

    • *************************** 1. row ***************************

    • Table: tt_image1

    • Create Table: CREATE TABLE `tt_image1` (

    • `id` int(11) NOT NULL AUTO_INCREMENT,

    • `image_file` longblob,

    • PRIMARY KEY (`id`)

    • ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

    • 1 row in set (0.00 sec)

    • mysql> show create table tt_image2G

    • *************************** 1. row ***************************

    • Table: tt_image2

    • Create Table: CREATE TABLE `tt_image2` (

    • `id` int(11) NOT NULL AUTO_INCREMENT,

    • `image_file` longtext,

    • PRIMARY KEY (`id`)

    • ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

    • 1 row in set (0.00 sec)

    • mysql> show create table tt_image3G

    • *************************** 1. row ***************************

    • Table: tt_image3

    • Create Table: CREATE TABLE `tt_image3` (

    • `id` int(11) NOT NULL AUTO_INCREMENT,

    • `image_file` varchar(100) DEFAULT NULL,

    • PRIMARY KEY (`id`)

    • ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

    • 1 row in set (0.00 sec)

    • 我們來給三張表插入 100 張圖片(插入前,建議把 max_allowed_packet 設(shè)置到最大)

    • tt_image1

    • root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;

    • do mysql -S /var/run/mysqld/mysqld.sock -e "insert into ytt.tt_image1(image_file)

    • values (load_file('/var/lib/mysql-files/$i.jpg'))";done;

    • tt_image2

    • root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;

    • do mysql -S /var/run/mysqld/mysqld.sock -e "insert into ytt.tt_image2(image_file)

    • values (hex(load_file('/var/lib/mysql-files/$i.jpg')))";done;

    • tt_image3

    • root@ytt:/var/lib/mysql-files# aa='begin;';for i in `seq 1 100`;

    • do aa=$aa"insert into ytt.tt_image3(image_file) values

    • ('/var/lib/mysql-files/$i.jpg');";

    • done;aa=$aa'commit;';mysql -S /var/run/mysqld/mysqld.sock -e "`echo $aa`";

    • 檢查下三張表記錄數(shù)

    • mysql> select 'tt_image1' as name ,count(*) from tt_image1 union allselect 'tt_image2',count(*) from tt_image2 union all select 'tt_image3', count(*) from tt_image3;+-----------+----------+| name      | count(*) |+-----------+----------+| tt_image1 |      100 || tt_image2 |      100 || tt_image3 |      100 |+-----------+----------+3 rows in set (0.00 sec)
    • 看下文件大小,可以看到實際大小排名,LONGTEXT 字段存儲的最大,LONGBLOB 字段縮小到一半,最小的是存儲圖片路徑的表 tt_image3。所以這里從存儲空間來看,存放路徑最占優(yōu)勢。

    • root@ytt:/var/lib/mysql/ytt# ls -silhS tt_image*274603 1.1G -rw-r----- 1 mysql mysql 1.1G Jul 11 07:27 tt_image2.ibd274602 545M -rw-r----- 1 mysql mysql 544M Jul 11 07:26 tt_image1.ibd274605  80K -rw-r----- 1 mysql mysql 112K Jul 11 07:27 tt_image3.ibd
    • 那么怎么把圖片取出來呢?

      tt_image3 肯定是最容易的

    • mysql> select * from tt_image3;+----+----------------------------+| id | image_file                 |+----+----------------------------+|  1 | /var/lib/mysql-files/1.jpg |+----+----------------------------+...100 rows in set (0.00 sec)
    • tt_image1 直接導(dǎo)出來二進(jìn)制文件即可,下面我寫了個存儲過程,導(dǎo)出所有圖片。

    • mysql> DELIMITER $$mysql> USE `ytt`$$mysql> DROP PROCEDURE IF EXISTS `sp_get_image`$$mysql> CREATE DEFINER=`ytt`@`localhost` PROCEDURE `sp_get_image`()mysql> BEGIN      DECLARE i,cnt INT DEFAULT 0;      SELECT COUNT(*) FROM tt_image1 WHERE 1 INTO cnt;      WHILE i < cnt DO        SET @stmt = CONCAT('select image_file from tt_image1  limit ',i,',1 into dumpfile ''/var/lib/mysql-files/image',i,'.jpg''');        PREPARE s1 FROM @stmt;        EXECUTE s1;        DROP PREPARE s1;      SET i = i + 1;      END WHILE;      END$$mysql> DELIMITER ;mysql> call sp_get_image;
    • tt_image2 類似,把 select 語句里 image_file 變?yōu)?unhex(image_file) 即可。

      總結(jié)

      這里我舉了個用 MySQL 來存放圖片的例子,總的來說有以下三點:

    • 占用磁盤空間大(這樣會帶來各種各樣的功能與性能問題,比如備份,寫入,讀取操作等)

    • 使用不易

    • 還是推薦用文件路徑來代替實際的文件內(nèi)容存放

    以上就是關(guān)于服務(wù)器如何存儲大量圖片相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。


    推薦閱讀:

    杭州企業(yè)稅務(wù)策劃服務(wù)熱線(杭州企業(yè)稅務(wù)策劃服務(wù)熱線是多少)

    抖音一站式服務(wù)可靠嗎(交980元做抖音帶貨是套路嗎)

    電商官網(wǎng)(電商服務(wù)平臺)

    杭州眾添億科技有限公司(杭州眾添億科技有限公司招聘)

    【揭秘】綿陽品牌策劃公司收費標(biāo)準(zhǔn)有多少?