鍍金池/ 問(wèn)答/ 數(shù)據(jù)庫(kù)問(wèn)答

前端端都可以做一個(gè)過(guò)濾處理呀,有問(wèn)題的數(shù)據(jù)就直接拋出

兔寶寶 回答

一般習(xí)慣上id都是主鍵吧,主鍵就相當(dāng)于唯一索引。對(duì)于你上面的情況,如果id字段有索引,那就不用再增加一個(gè)id+status的組合索引了

拽很帥 回答

這問(wèn)題已經(jīng)解決,蠢問(wèn)題

傲嬌范 回答

eg : 執(zhí)行100次 update sql

未使用連接池執(zhí)行sql


-- 步驟    建立連接(認(rèn)證、權(quán)限等)     執(zhí)行sql              銷(xiāo)毀連接
-- 耗時(shí): |<--------- t1 -------->|<------ t2 ----->|<------- t3 ------>

-- 總耗時(shí): tt1 = 100 *(t1 + t2 + t3) 

使用連接池執(zhí)行sql


-- 預(yù)先建立 5 連接并保存起來(lái)復(fù)用
-- 耗時(shí)   5 * t1  
-- 總耗時(shí): tt2 = (5 * t1) + 100 * t2
-- 注:連接池的連接可以復(fù)用,下次不需要在重新建立連接,創(chuàng)建一次即可

很顯然: tt2 < tt1

so,使用連接池可以解決因?yàn)閳?zhí)行sql所帶來(lái)的額外開(kāi)銷(xiāo)的問(wèn)題!

Java中常用的數(shù)據(jù)庫(kù)連接池

  1. C3P0是一個(gè)開(kāi)放源代碼的JDBC連接池,它在lib目錄中與Hibernate一起發(fā)布,包括了實(shí)現(xiàn)jdbc3和jdbc2擴(kuò)展規(guī)范說(shuō)明的Connection和Statement 池的DataSources對(duì)象。(主頁(yè):http://sourceforge.net/projec...
  2. BoneCP 是一個(gè)開(kāi)源的快速的 JDBC 連接池。BoneCP很小,只有四十幾K(運(yùn)行時(shí)需要log4j和Google Collections的支持,這二者加起來(lái)就不小了),而相比之下 C3P0 要六百多K。另外個(gè)人覺(jué)得 BoneCP有個(gè)缺點(diǎn)是,JDBC驅(qū)動(dòng)的加載是在連接池之外的,這樣在一些應(yīng)用服務(wù)器的配置上就不夠靈活。當(dāng)然,體積小并不是 BoneCP優(yōu)秀的原因,BoneCP 到底有什么突出的地方呢,請(qǐng)看看性能測(cè)試報(bào)告。(主頁(yè):http://jolbox.com/

  3. DBCP (Database Connection Pool)是一個(gè)依賴Jakarta commons-pool對(duì)象池機(jī)制的數(shù)據(jù)庫(kù)連接池,Tomcat的數(shù)據(jù)源使用的就是DBCP。目前 DBCP 有兩個(gè)版本分別是 1.3 和1.4。1.3 版本對(duì)應(yīng)的是 JDK 1.4-1.5 和 JDBC 3,而1.4 版本對(duì)應(yīng) JDK 1.6 和 JDBC 4。因此在選擇版本的時(shí)候要看看你用的是什么 JDK版本了,功能上倒是沒(méi)有什么區(qū)別。(主頁(yè):http://commons.apache.org/dbcp/
  4. Druid is a distributed, column-oriented, real-time analytics data store that is commonly used to power exploratory dashboards in multi-tenant environments. Druid excels as a data warehousing solution for fast aggregate queries on petabyte sized data sets. Druid supports a variety of flexible filters, exact calculations, approximate algorithms, and other useful calculations. Druid can load both streaming and batch data and integrates with Samza, Kafka, Storm, Spark, and Hadoop.(http://druid.io/)

這里特別說(shuō)一下 Druid 是阿里巴巴開(kāi)源的連接池,"馬爸爸"最近有點(diǎn)了,Druid 明明就是中國(guó)人開(kāi)源的軟件,官方網(wǎng)頁(yè)竟然沒(méi)有找到中文文檔的入口,官網(wǎng)全英文!本來(lái)還想特地介紹一下 Druid,想了一下還是算了吧!

陪妳哭 回答

你obj一直被 getProtoTypeOf的值覆蓋,當(dāng)然每次都不一樣了.

未命名 回答

在PHP中PDO::prepare里包含?就表示是占位符。直接使用PDO::query就不會(huì)有這個(gè)問(wèn)題。

其實(shí)關(guān)于這個(gè)問(wèn)題,官方早就有回復(fù):https://bugs.php.net/bug.php?...

解決方案:關(guān)閉本地模擬預(yù)處理

$pdo = new PDO(...);
$pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES ,false);

或者

$pdo->prepare($sql,[\PDO::ATTR_EMULATE_PREPARES=>false]);

http://php.net/manual/en/pdo....

PHP 默認(rèn)開(kāi)啟本地模擬,關(guān)閉ATTR_EMULATE_PREPARES后會(huì)將prepare操作發(fā)送到數(shù)據(jù)庫(kù)服務(wù)器由數(shù)據(jù)庫(kù)服務(wù)器來(lái)進(jìn)行操作。

在my.cnf設(shè)置任何用戶登錄都可以獲得全部的權(quán)限
在[mysqld]的段中加上一句:skip-grant-tables 然后重啟mysql

然后執(zhí)行修改密碼的sql:
UPDATE user SET Password = password ('new-password') WHERE User = 'root';
flush privileges;

再次重啟mysql,這下應(yīng)該就好了

咕嚕嚕 回答

解決

User.findOrCreate({
      where: {name: '小明'}, 
      defaults: {age: 5}
    })
    .spread((user, created) => {
      if(created === false) {
        user.update({......})
      }
    })

分析

  1. 查找小明
  2. 如果沒(méi)有

    1. 根據(jù)defaults創(chuàng)建數(shù)據(jù)
    2. 返回創(chuàng)建后的數(shù)據(jù)user 為剛創(chuàng)建的對(duì)象
    3. 返回是否創(chuàng)建created 為true
    4. 通過(guò)spread拆分返回的數(shù)組
  3. 如果已存在

    1. 返回已存在的數(shù)據(jù)
    2. user是已存在數(shù)據(jù)
    3. created為false
    4. 更新user即可

建議

比較常用的框架,插件,最好還是通讀一下文檔

參考

http://docs.sequelizejs.com/m...

不二心 回答
  • fields的類(lèi)型是Array,表示第一個(gè)參數(shù)內(nèi)的部分字段名(例fields['count']的話,upsert只添加/更新count字段)
  • 正確的寫(xiě)法:
model.upsert({
    id: 2,
    name: find.name
    count: 0
})
.then(inserted => { // 此參數(shù)表示是添加還是修改,true添加,false修改
    model.increment('count', {
        by: 2,
        where: {id: 2}
    });
});
孤星 回答

思路是一致的,道路是相同的。

這是我的項(xiàng)目中的 forms.py 的定義

圖片描述

這是我的項(xiàng)目中的 views.py 的定義

圖片描述

項(xiàng)目的展示是如此而已:

圖片描述

其中的selected 都是在 forms 里定義,然后在 views 里通過(guò)定義 choices,動(dòng)態(tài)調(diào)用另一個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)。

莓森 回答

從更新的情況來(lái)說(shuō)這個(gè)字段應(yīng)該是存取了microtim(true)

項(xiàng)目里搜索下這個(gè)表達(dá)式排查

或者

搜索所有可能更新該表操作的代碼檢查

遺莣 回答

試試用jstack把不能用時(shí)的tomcat的調(diào)用棧的信息打出來(lái)看看

司令 回答

找到原因了.
是系統(tǒng)防火墻引起的.
關(guān)閉WIN10系統(tǒng)的防火墻就好了

未命名 回答

在 Navicat for MySQL 下面直接執(zhí)行 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 就可以

方法1: 用SET PASSWORD命令

  mysql -u root

  mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');

方法2:用mysqladmin

  mysqladmin -u root password "newpass"

  如果root已經(jīng)設(shè)置過(guò)密碼,采用如下方法

  mysqladmin -u root password oldpass "newpass"

方法3: 用UPDATE直接編輯user表

  mysql -u root

  mysql> use mysql;

  mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';

  mysql> FLUSH PRIVILEGES;

在丟失root密碼的時(shí)候,可以這樣

  mysqld_safe --skip-grant-tables&

  mysql -u root mysql

  mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';

  mysql> FLUSH PRIVILEGES;

半心人 回答

服務(wù)開(kāi)啟開(kāi)啟了沒(méi);感覺(jué)是鏈接錯(cuò)誤啊,不能添加 --auth;

巫婆 回答

你用的什么系統(tǒng),還有pg 版本,是不是你的用戶不對(duì),還有依賴包沒(méi)有。

何蘇葉 回答

lz找到解決方案了么?

喵小咪 回答

已經(jīng)解決,粗心加概念不清,還需努力啊!

糖豆豆 回答

union,至于判斷哪個(gè)表標(biāo)題為空的事,還是交給編程語(yǔ)言去做吧