鍍金池/ 問答/ 數(shù)據(jù)庫問答
生性 回答

不進行參數(shù)傳遞的話,就可以理解為是有一個“全局變量”在起作用。

  1. 每個req觸發(fā)一次docker重建,設置global.transaction。不過肯定不適合已有項目,用serverless還有可能實現(xiàn)
  2. 設置 req.transaction 變量,在各項操作中,保證 req 變量可用。這樣的話,相當于用req偽裝了全局變量
風畔 回答

從這幾個方面入手
1.建立一些有效的索引,索引是比較影響查詢速度的,它可以快速的定位到你要查詢的數(shù)據(jù),如果有多個條件的話可以建立聯(lián)合索引,但要注意聯(lián)合索引的順序,比如有一個這樣的索引,有以下這些字段,(user_id,type_id,views (瀏覽次數(shù)))當我們寫查詢語句的時候,mysql會從左往右匹配索引。比如我們這么寫 (加入表名叫post)
select * from post where user_id = 1 and views > 2 ,如果這樣的話,我們的索引只匹配到了user_id 就不匹配了,因為mysql只能順序的匹配索引。索引的順序也很重要,一般是將區(qū)分度比較高的索引放在最左側,比如 上邊的例子,因為一個網(wǎng)站里用戶的數(shù)量正常來說會比類型的數(shù)量要多很多,所以用戶id的區(qū)分度比較高。
2.如果實在是無法避免條件確實不夠,比如上例子確實只需要這兩個條件(user_id,views),如果是這兩個,mysql就只能匹配user_id,而type_id 無法匹配,由于type數(shù)量并不多,那么我們可以在語句中加入 and type in(此處填寫所有類型id,當然如果類型特別多就不要這么干了)。這樣的話,建立的索引就能全部匹配。
3.盡可能的用合適的數(shù)據(jù)類型來表示數(shù)據(jù),定長的數(shù)據(jù)char要比varchar優(yōu)秀,如果表示狀態(tài)的話tinyint要比int好。
4.如果數(shù)據(jù)量特別多,需要統(tǒng)計條數(shù)的話,如果不是需要非常精確的數(shù)字 explain 的row 是比較快的方式,它比count要快。
5.切分查詢,比如,有這樣一個需求。查詢出所有文章(post),并且包含作者的名字也就是user_name ,一般的話,我們會想到去連表,但我們可以把這個查詢切分開來,先用一個sql查詢出所有文章,再通過代碼拿到所有user_id,然后用in去user表中查詢,最后將查詢的結果合并,這么做雖然有些麻煩,但有時會是比較快的選擇,因為,當我們將查詢分開的時候,如果此前有程序做過同樣的查詢,mysql就不會執(zhí)行一遍查詢語句,而是會直接從緩存里取數(shù)據(jù)。
6.如果數(shù)據(jù)量不大,建議還是全表掃比較快,因為畢竟索引也有成本。

野橘 回答

主要就是(?=),這個表示正向先行斷言,鏈接

你這個例子里面,就是找到一個位置,這個位置是數(shù)字,同時后面可以匹配括號里面的表達式,比如你匹配a1a也可以的。

尕筱澄 回答

mysql默認事務隔離級別Repeatable Read下,update語句如果沒指定id或唯一索引本身就會鎖表,否則鎖行,所以不需要顯示加鎖的。

墻頭草 回答

反范式了解一下?
MongoDB為水平擴展和高性能而生,注意在分布式環(huán)境下應該避免用關系模型來思考問題,因為這往往都會成為性能的瓶頸。就你的問題而言,似乎沒有什么理由要把這些數(shù)據(jù)拆成兩個表來存儲。如果在同一個文檔中同時存放你說的那些數(shù)據(jù),問題是不是就解決了?

凹凸曼 回答

試試這個

import sys
sys.path.append('../django_auth_example')
from settings import STATICFILES_DIRS
print(STATICFILES_DIRS)
只愛你 回答

查出每天內(nèi)的,程序不就可以二次處理算出周內(nèi)和月內(nèi)的充值總額了么

互擼娃 回答

假設他們之間有外鍵外鏈可以用連接查詢
select a.C1,b.C2,c.C3 form B1 as a join B2 b on a.id=b.aid join B3 c on c.id=a.cid

鹿惑 回答

在.htaccess里寫上"ErrorDocument 404 error/404.html" 后面是404路徑,不需要雙引號,保存后重啟apache即可,希望能幫助到你

大濕胸 回答

試試這個?

userExample.or().orMobileLike("%1502%");
userExample.or().orRealNameLike("%1502%");
userExample.or().orNickNameLike("%1502%");
老梗 回答

修飾符直接寫事件上好像就不能解除了,不過可以通過這樣方式實現(xiàn)你的需求

  <form v-on:submit="e => isPrevent && e.preventDefault()"></form>

isPreventtrue才觸發(fā)prevent

伐木累 回答

簡單的回答是可以的.

但是:
存在一個列中,讀是沒有問題的,但修改,針對性回復,審核等等的操作需要把全部數(shù)據(jù)讀出來再寫回去,遇到并發(fā)時很難處理,如兩個人同時留言,就有可能一個人的無法保存,可能多次提交才能完成.
如果想讀操作保持高效和寫操作的結構化,一般會做一下數(shù)據(jù)冗余, 即每個留言做為單獨數(shù)據(jù)與數(shù)據(jù)庫關聯(lián),但全部留言可以生成靜態(tài)文件或緩存的方式,而不是每次都查詢每個文章的全部留言后再合成. 合成一般只發(fā)生在留言數(shù)據(jù)發(fā)生變動時.

神曲 回答

具體語句就不寫了,說一下思路。
mysql高版本,支持窗口函數(shù),像這樣的:

row_number over (partition by transaction_type order by amount desc)

然后根據(jù)函數(shù)的返回值<=3,作為過濾條件

如果不支持的話,mysql有@變量,大概用法如下,需要sql中先按照transaction_type amount排序,判斷transaction_type 和前一個是否相等,重置@rownum的值。最后按照下面語句中rank的值進行過濾。
用關鍵詞“mysql row number”搜索,能找到完整的例子。

SELECT t.*, 
       @rownum := @rownum + 1 AS rank
  FROM YOUR_TABLE t, 
       (SELECT @rownum := 0) r
乞許 回答

一般來說就是把前后端解耦,前端一套可以部署到靜態(tài)服務器獨立跑,需要數(shù)據(jù)時再AJAX訪問后端提供的相應接口拿東西。

故林 回答

不能同時進行更新和查詢操作,兩個查詢時可以的,這兩步要分開寫。

忘了我 回答

你這個亂打標簽,導致我沒有看到問題?

result_query = session.query(Map).filter(Map.a.between(1, 3), Map.b.between(3, 6))

使用 between 即可。
還有,送你一個福利——https://github.com/eastossifr..., 這是我的一個項目。

孤慣 回答

估計是字體問題,你把字體設置為ubuntu mono試試...

墨小羽 回答

時間分組,排序字段不清,姑且按price排序吧

select 
    mtime,sum(price),sum(number),
    substring_index(group_concat(price order by price),',',1) min_price,
    substring_index(group_concat(price order by price),',',-1) max_price
from table group by mtime;
孤酒 回答

你好,生產(chǎn)環(huán)境中一般不開啟。

TestOnBorrow=false時,由于不檢測池里連接的可用性,于是假如連接池中的連接被數(shù)據(jù)庫關閉了,應用通過連接池getConnection時,都可能獲取到這些不可用的連接,且這些連接如果不被其他線程回收的話,它們不會被連接池被廢除,也不會重新被創(chuàng)建,占用了連接池的名額。

當TestOnBorrow=true時,有兩種情況:

1.集群某實例宕掉時,如果連接剛好不處于通信階段,tcp連接正處于CLOSE_WAIT狀態(tài)或已關閉,當應用通過連接池getConnection時,在borrow時會檢測連接,由于連接已關閉,于是報了如下報錯,并重新建立新連接,此時的新連接到集群的其他實例上了。后面能正常通信。

2.集群某實例宕掉時,如果連接剛好處于通信階段,由于客戶端無法立即感知服務端已斷連接,它可能會報如下錯誤,等待服務端的響應超時報錯。當應用通過連接池getConnection時,在borrow時會檢測連接,由于連接已關閉,于是報了如下報錯,并重新建立新連接,此時的新連接到集群的其他實例上了。后面能正常通信。


  1. testOnBorrow和testOnReturn在生產(chǎn)環(huán)境一般是不開啟的,主要是性能考慮。失效連接主要通過testWhileIdle保證,如果獲取到了不可用的數(shù)據(jù)庫連接,一般由應用處理異常。
  2. 對于常規(guī)的數(shù)據(jù)庫連接池,testOnBorrow等配置參數(shù)的含義和最佳實踐可以參考官方文檔。
  1. . 取消默認的排序: `sql SELECT device_id,MAX(time) AStime FROM

       service_message GROUP BY device_id order by null; ```
  2. 不需要實時結果的話,把查詢結果緩存起來。