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

mybatis是用的mached的值,在jdbc協(xié)議(api)中執(zhí)行更新(update),定義的時(shí)候就是定義的mached的值(匹配數(shù)量),而不是改變(change)數(shù)量

clipboard.png

故人嘆 回答

400百萬(wàn)數(shù)據(jù)不會(huì)都放在userList里了吧?
數(shù)據(jù)從哪里來(lái)? 文件? 網(wǎng)絡(luò)?
如果那樣的話內(nèi)存除非很大,不慢才怪, 要分批, 一次或500~1000左右記錄是效率更高.

維她命 回答
前面說(shuō)的是“列的前綴”, 但下面這個(gè)多列索引, 怎么還有“前綴列”? 前綴列和列前綴一樣?????都有選擇性?

列的前綴是說(shuō)對(duì)于內(nèi)容很長(zhǎng)的列,必須使用前綴索引,否則索引將會(huì)變得很大(或者 MySQL 壓根就不允許索引這些列的完整長(zhǎng)度)
前綴列是說(shuō)建了(A,B,C,D)的索引,A 或者 A,B 或者 A,B,C 都叫做前綴列

什么叫 "只使用了索引部分前綴列的查詢來(lái)說(shuō)選擇性也更高" ?

如果你的 D 列選擇性并不高(也就是不同的記錄數(shù)占總記錄數(shù)的比值不高),但是你只使用到了 A,B,C 那么選擇性也是很高的

首先我看不到斷句在哪里? 是‘索引部分’的前綴列? 還是索引的‘部分前綴列’?

應(yīng)該斷句為 索引 的 部分的前綴列

這里怎么扯到選擇性的?

上一節(jié)是多列索引,然后引出了你列出的本節(jié)————選擇合適的索引列順序,再結(jié)合上上一節(jié)的索引選擇性,作者試圖給你分析在使用“多列索引”的情況下,如何提高“索引的選擇性”。

而且下面, 為什么customer_id的數(shù)量小了, 就排前面了?? 完全沒(méi)看出怎么就選擇性大了

首先作者分別篩選了 staff_id=2和customer_id=584的情況,customer_id 篩選出的結(jié)果集很少,這也就說(shuō)明選擇性更高,這句話你如果不理解怎么引出的,上一段你標(biāo)紅那里的下一句就是“然而,性能不只是依賴于所有索引列的選擇性(整體基數(shù)),也和查詢條件的具體值有關(guān),也就是和值的整體分布有關(guān)”

陌南塵 回答
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <style>
        .circle {
            width: 100px;
            height: 100px;
            border: 20px solid #000;
            border-radius: 50%;
            border-left-color: transparent;
            border-top-color: transparent;
            transform: rotate(-45deg);
        }
    </style>
</head>
<body>
<div class="circle"></div>
</body>
</html>

這個(gè)半圓用SVG寫的話也是挺簡(jiǎn)單的。

默念 回答

pip 不支持 mysql-connector-python 了,編譯安裝

git clone https://github.com/mysql/mysql-connector-python.git
cd mysql-connector-python
python ./setup.py build
python ./setup.py install
lower('email'::text) 你每一次插入,索引都是'email'重復(fù)
--我猜你是這么寫的 create unique index idx_users_email on users USING btree(lower('email'::text))
--改成
create unique index idx_users_email on users USING btree(lower(email))
維她命 回答

分表考量的不只是單表數(shù)據(jù)量,還有磁盤網(wǎng)絡(luò)io,10Y的數(shù)據(jù)再加后續(xù)增量的話,業(yè)務(wù)繁忙建議還是分成不同的實(shí)例,每個(gè)實(shí)例再分庫(kù)分表,主要目標(biāo)數(shù)據(jù)流量打散

維她命 回答

scoped_session好像是一個(gè)輪巡,這樣寫的化好像是支持并發(fā)

尋仙 回答

Master/Slave

先說(shuō)最后一個(gè),是Master/Slave,不是Slaver。這種方式基本上不再推薦使用,只能從Master復(fù)制數(shù)據(jù)到Slave,并不提供高可用,一旦Master結(jié)點(diǎn)出故障就比較難處理。具體細(xì)節(jié)就不說(shuō)了,反正已經(jīng)不推薦使用。

Replica Set

即常說(shuō)的復(fù)制集。復(fù)制集的主要目標(biāo)有幾個(gè):

  • 高可用(主要目標(biāo)):當(dāng)一個(gè)結(jié)點(diǎn)故障時(shí)自動(dòng)切換到其他結(jié)點(diǎn);
  • 數(shù)據(jù)冗余(主要目標(biāo)):數(shù)據(jù)復(fù)制到n個(gè)結(jié)點(diǎn)上,增加數(shù)據(jù)安全性,同時(shí)為高可用提供基礎(chǔ);
  • 功能隔離(次要目標(biāo)):使用不同的結(jié)點(diǎn)隔離某些有特殊需求的功能,比如使用一個(gè)結(jié)點(diǎn)進(jìn)行OLAP運(yùn)算(大規(guī)模資源占用),使用一個(gè)結(jié)點(diǎn)在遠(yuǎn)程做災(zāi)備(性能要求不如本地高),讀寫分離等等;

Sharded Cluster

即分片集。分片集的主要設(shè)計(jì)目標(biāo)是:

  • 水平擴(kuò)展:當(dāng)一臺(tái)服務(wù)器滿足不了需求的時(shí)候,我們可以選擇垂直擴(kuò)展(增加服務(wù)器硬件),它雖然簡(jiǎn)單,但很容易達(dá)到極限,并且面臨成本高等明顯缺點(diǎn)。成本更低的方式是使用n臺(tái)服務(wù)器組成集群來(lái)滿足系統(tǒng)需求。這就是分片集的主要設(shè)計(jì)目標(biāo);
  • 縮短響應(yīng)時(shí)間:因?yàn)榭梢园褦?shù)據(jù)分散到多臺(tái)服務(wù)器上,自然每臺(tái)服務(wù)器的處理壓力減小,處理時(shí)間就會(huì)縮短;

這里會(huì)出現(xiàn)一個(gè)問(wèn)題:假設(shè)每臺(tái)服務(wù)器出故障的機(jī)率是x%,那么n臺(tái)服務(wù)器有一臺(tái)出現(xiàn)故障的機(jī)率就是x% * n,如果不做高可用設(shè)計(jì),集群出現(xiàn)故障的概率就會(huì)隨機(jī)器數(shù)量成正比增長(zhǎng),這在工程上是不能接受的。幸運(yùn)的是我們已經(jīng)有了解決高可用的方案,也就是復(fù)制集。所以MongoDB的分片集群要求每一個(gè)片都是復(fù)制集(當(dāng)然測(cè)試環(huán)境也可以使用單結(jié)點(diǎn),生產(chǎn)環(huán)境不推薦)。

總結(jié)

大概就是這樣,大家的設(shè)計(jì)目標(biāo)不一樣,各做各的事情。

孤星 回答

你畫出的是一個(gè)json數(shù)組,每個(gè)json的key都相同,那就直接去掉key就行了啊。
原來(lái)是[{k1:v1},{k1:v2},{k1:v3},...]
直接改成 [v1, v2, v3, ...]

  1. 首先確認(rèn)datadir位置,ibdata1默認(rèn)寫在datadir目錄下
  2. 刪除datadir,然后重新初始化mysql

/usr/sbin/mysqld --initialize-insecure --user=mysql --datadir=/data/mysql --sock=/var/lib/mysql/mysql.sock

影魅 回答

寫個(gè)存儲(chǔ)過(guò)程,調(diào)用

DROP PROCEDURE IF EXISTS dorepeat; 
CREATE PROCEDURE dorepeat(p1 INT)
BEGIN
    DECLARE i int DEFAULT 0;
    REPEAT 
        SET i = i + 1; 
        set @sql_create_table_gpstrail = concat('create table if not exists tab_test_',i,' like tab_test');
        PREPARE sql_create_table_gpstrail FROM @sql_create_table_gpstrail;     
        EXECUTE sql_create_table_gpstrail;
    UNTIL i > p1 END REPEAT;
END

call dorepeat(3);
安淺陌 回答

寫腳本在進(jìn)行數(shù)據(jù)清洗然后批量插入吧,感覺(jué)是比較穩(wěn)妥的做法。
缺點(diǎn)就是相對(duì)速度較慢。

網(wǎng)妓 回答

從主鍵還是索引取決于查詢條件,即where和order by后面的涉及的字段.可以用explain select xxx from your_table來(lái)看.

命多硬 回答

我就是使用的 MariaDB , Typecho 和 WordPress 基本上都是默認(rèn)支持的!不需要你有啥修改的!

https://www.imydl.tech

https://www.imydl.com

遺莣 回答

這種情況一般檢查兩個(gè)地方
1.服務(wù)器的3306端口是否開發(fā)
2.你登錄的mysql賬戶是否被允許遠(yuǎn)程連接

亮瞎她 回答

個(gè)人建議一張表就可以了,5個(gè)字段(等級(jí)、月份、比例、上線、是否生效)

你列出的EXCEL是展現(xiàn)樣式,沒(méi)必要根據(jù)這個(gè)來(lái)設(shè)計(jì)表結(jié)構(gòu)
輸入格式盡量和用戶溝通,按照標(biāo)準(zhǔn)的二維表錄入,實(shí)在不行搞個(gè)導(dǎo)入功能