鍍金池/ 問答/ 數(shù)據(jù)庫問答
巫婆 回答

簡單的答案:不行
內(nèi)存對數(shù)據(jù)庫的作用是不可忽略的,但是你似乎夸大了它的作用。這樣考慮:
假設(shè)你有100w條數(shù)據(jù),需要從中按一定的條件來count。如果沒有索引,你需要進(jìn)行100w次比較,看其中有哪些是滿足條件的數(shù)據(jù),然后計數(shù)。為了進(jìn)行這個比較,首先要把數(shù)據(jù)從磁盤上撈出來吧,擴(kuò)大內(nèi)存確實對這方面有幫助,但是然后呢?比較100w條數(shù)據(jù)是不是要消耗很多時間?CPU是不是也會漲很高?這就是O(n)的時間復(fù)雜度。
如果能完整命中索引,這個過程將大大簡化,因為對數(shù)據(jù)的搜索可以想象為折半查找,其復(fù)雜度為O(log2(n))。兩者的時間消耗大概是這樣(橫坐標(biāo)數(shù)據(jù)量,縱坐標(biāo)時間):
https://i.stack.imgur.com/7eh...
clipboard.png

簡單地說,在同樣的硬件條件下:

  • 如果沒有索引支持,數(shù)據(jù)量越多需要的時間越長
  • 而完整命中索引時理論上數(shù)據(jù)量增長并不會造成消耗的時間顯著增長
爆扎 回答

可以一次執(zhí)行多條。用python來舉個栗子

import MySQLdb as mdb
import sys

conn = mdb.connect(host = 'localhost', user = 'root', passwd = '123456', db = 'test')
 
 cur = conn.cursor()
cur.execute("insert into contact values('key1', 'value1')")
cur.execute("select * from test")
row_num = int(cur.rowcount)
for i in range(row_num):
     row = cur.fetchone()
     print row
 #在數(shù)據(jù)操作完成之后,進(jìn)行commit,完成數(shù)據(jù)庫的數(shù)據(jù)更新
 conn.commit()
 cur = conn.cursor()
 conn.close()

此問題與MySQL的存儲引擎對事務(wù)的支持有關(guān)。 MySQL中有多種類型的存儲引擎, 例如: MyISAM, InnoDB等。 MyISAM不支持事務(wù)處理, 而InnoDB是事務(wù)型數(shù)據(jù)庫, 支持事務(wù)。比如InnoDB引擎, 所以對數(shù)據(jù)庫數(shù)據(jù)的操作會在事先分配的緩存中進(jìn)行, 只有在commit之后, 數(shù)據(jù)庫的數(shù)據(jù)才會改變。

九年囚 回答

做一個數(shù)據(jù)接口,然后通過js渲染嘍!不過本身這個東東就是來整靜態(tài)的,你再整一個服務(wù)器給寫數(shù)據(jù)接口,就有點(diǎn)浪費(fèi),劃不來

不歸路 回答

django確實不支持database links,可以試試其他方式:https://code.djangoproject.co...

久礙你 回答

如果你的 mongo 安裝時將 bin 目錄加入了環(huán)境變量, 可以用 whereis mongodump 來找到這條命令在哪.
如果沒有加入環(huán)境變量, 可以用 ps -ef | grep mongo 命令查看你的 mongo 是如何被啟動的.
如果你的 mongo 是手敲命令啟動的, 那么上面這條命令就可以顯示出你的啟動命令, 你也就找到了 mongo 的 bin 目錄.
如果你的 mongo 是用諸如 systemd 等方式啟動的, 那你可能還需要進(jìn)一步查看 mongo 的啟動腳本, 比如 vim /etc/init.d/mongo , 來找到其 bin 目錄.
如果上述命令只有一條輸出, 即, 只輸出了 ps -ef | grep mongo, 說明你的 mongo 根本沒有啟動, 也就不用再費(fèi)勁去找如何用 mongodump 命令備份數(shù)據(jù)了.

重要疑問: mongodump 命令只需要知道端口號和授權(quán)信息就可以了, 也可以用 mongo 的連接 url, 你為什么一定要找到它的 bin 目錄呢. 看上面截圖你都有系統(tǒng)的 root 賬號了, 難道還不知道 mongo 端口號和賬號密碼嗎.

笑浮塵 回答
  1. 代碼沒有對 Content.find() 為空時進(jìn)行判斷,為空的話,應(yīng)該是需要單獨(dú) resolve 空數(shù)組
  2. exec 方法里只對存在 doc 和存在 err 進(jìn)行了處理,如果沒有 err 且 doc 為空,也會有問題
近義詞 回答

sql3 = "update account set account_fullname='%s',account_id_from_media='%s', funds='%s',agency_id=8,media_id=4 where media_id=4 and account_id_from_media='%s';" %(manage_page_data[i-9], manage_page_data[i-9], manage_page_data[i-9 +1] ,manage_page_data[i - 9 + 1])

貓小柒 回答

不建議在數(shù)據(jù)庫層面加鎖,建議通過服務(wù)端的內(nèi)存鎖(鎖主鍵)。當(dāng)某個用戶要修改某個id的數(shù)據(jù)時,把要修改的id存入memcache,若其他用戶觸發(fā)修改此id的數(shù)據(jù)時,讀到memcache有這個id的值時,就阻止那個用戶修改。原文詳情

荒城 回答

這種一般都是用緩存完成的,每次都查性能太差了

1):放入在Redis中
2):放入ServletContext域
吢丕 回答

問題已經(jīng)解決了。
為了禁止body滑動,
在安卓時添加下面代碼,IOS不添加

$(".modal").on("touchmove", function (e) {
   e.preventDefault();
});
擱淺 回答

最簡單的方式,在異地部署每個片的一個復(fù)制集節(jié)點(diǎn),包括config。等數(shù)據(jù)同步完之后將主節(jié)點(diǎn)切換到新節(jié)點(diǎn)上,然后將其他節(jié)點(diǎn)移出復(fù)制集,這時候你的集群就已經(jīng)到新機(jī)房了。

柒喵 回答
按道理不管db.cast產(chǎn)生的結(jié)果是什么類型,db.cast(t.create_time, db.DATE) == db.cast(current_time. db.Date)的結(jié)果都應(yīng)該是True or False嗎?

如果sqlalchemy 通過實現(xiàn)魔術(shù)方法__eq__重載了運(yùn)算符==, 那這兩個對象的==操作就不一定返回True/False
舉個例子:

>>> class C(object):
    def __init__(self, name):
        self.name = name
    def __eq__(self, other):
        return '{}=={}'.format(self.name, other.name)

    
>>> a = C('jack')
>>> b = C('lucy')
>>> a == b
'jack==lucy'
萌吟 回答

樓主你的問題解決了嗎?我也遇到這個問題,試過很多方法都不行,現(xiàn)在只能先將圖片下載到本地,再上傳到素材,再拿到媒體id發(fā)送給用戶。

魚梓 回答

圖片描述
這是我的阿里云虛擬主機(jī)和數(shù)據(jù)庫,可以看到他們地址不相同,
然而我用phpstudy時,他的服務(wù)器文件和數(shù)據(jù)庫文件是在一個根目錄下的不同文件夾的,
這就讓我和疑惑了。。。

服務(wù)器和數(shù)據(jù)庫之間存取數(shù)據(jù)相當(dāng)于下面哪種情況?

  • C盤目錄foo目錄bar之間復(fù)制
  • C盤D盤之間復(fù)制
  • 不同電腦之間復(fù)制

upsert跟insert比,肯定是insert要好一些。因為upsert要先find是否存在,然后才insert,這是有額外開銷的。但是理論上不會有本質(zhì)的區(qū)別,因為B樹的時間復(fù)雜度是O(log2(N))——消耗時間不會隨數(shù)據(jù)量增長有明顯的增長:
clipboard.png

但是如果upsert的條件不能命中索引,那時間復(fù)雜度就是O(N),同樣在上圖中可以看到45度那條線,這就是時間跟數(shù)據(jù)量成正比了。

所以結(jié)論是:

  • 如果upsert的條件能夠命中索引,理論上跟insert的差異不會太大,也不會隨著數(shù)據(jù)量增長有明顯的變化趨勢;
  • 如果upsert的條件不能命中索引,花的時間就會隨數(shù)據(jù)量成正比增長。

理論歸理論,工程上你還得保證內(nèi)在足夠容納索引,否則與磁盤交換將極大地減慢索引搜索的速度。交換得越多,性能越差,這就會破壞O(log2(N))的曲線了