升級專案安全連線字串-步驟
阿新 • • 發佈:2020-08-05
1.資料庫硬體優化(選型)
1.一般資料庫選擇
1.真實的硬體,物理機
2.雲產品ECS,自己搭建資料庫
3.雲資料庫(RDS、DRDS)
2.資料庫型別
1.OLTP 線上事務處理系統 支援大量併發使用者定期新增和修改資料。 反映隨時變化的單位狀態,但不儲存其歷史記錄。 包含大量資料,其中包括用於驗證事務的大量資料。 可以進行優化以對事務活動做出響應。 提供用於支援單位日常運營的技術基礎結構。 個別事務能夠很快地完成,並且只需訪問相對較少的資料。 實時性要求高。 交易一般是確定的,所以OLTP是對確定性的資料進行存取。(比如存取款都有一個特定的金額) 併發性要求高並且嚴格的要求事務的完整、安全性。 2.OLAP 資料倉庫,資料處理,資料展示(使用nosql更適合) ROLAP MOLAP HOLAP
3.硬體選型
1)CPU選型: 1.IO密集型:線上系統,OLTP主要是IO密集型的業務,高併發(OLTP),E系列(至強),主頻相對低,核心數量多 2.CPU密集型:資料分析資料處理,OLAP,cpu密集型的,需要CPU高計算能力(OLAP,不需要很高的併發,計算只用一個使用者就可以了),I系列的(IBM),主頻很高,核心少 (打遊戲一般選擇CPU密集型) 2)記憶體選擇: 1.建議2-3倍cpu核心數量 (ECC) 2.記憶體越大它使用越多,浪費越多,命中率越低 3)磁碟選擇: 1.SATA-III 2.SAS 3.Fc 4.SSD(sata) pci-e 級別 Flash 級別 4)儲存選擇(一般大型企業) 5)網路選擇: 1.硬體買好的(單卡單口,網絡卡有很多個口,選擇單口的,效能更好) 一般可以插4塊卡,兩個內網兩個外網,避免一塊出現問題就掛掉 2.網絡卡繫結(bonding),交換機堆疊 意思就像負載均衡,將兩塊網絡卡邏輯繫結,一個網絡卡繫結一個交換機,如果做了網絡卡繫結,交換機也一定要做堆疊 繫結方式:負載均衡模式,主備模式
4.作業系統優化
1)Swap調整: echo 0 >/proc/sys/vm/swappiness的內容改成0(臨時), /etc/sysctl.conf 上新增 vm.swappiness=0(永久) sysctl -p 這個引數決定了Linux是傾向於使用swap,還是傾向於釋放檔案系統cache。在記憶體緊張的情況下,數值越低越傾向於釋放檔案系統cache。 當然,這個引數只能減少使用swap的概率,並不能避免Linux使用swap。 2)IO排程策略: centos 7 預設是deadline cat /sys/block/sda/queue/scheduler #臨時修改為deadline(centos6) echo deadline > /sys/block/sda/queue/scheduler vi /boot/grub/grub.conf 更改到如下內容: kernel /boot/vmlinuz-2.6.18-8.el5 ro root=LABEL=/ elevator=deadline rhgb quiet
5.應用端優化
1. 減少爛SQL:不走索引,複雜邏輯,切割大事務(插入100萬條資料可以拆成100條插入一次)
2. 避免業務邏輯錯誤
3. 說白了就是使用資料庫時,操作標準一些
2.建立資料庫
1.建立一個庫一個表,並插入100萬資料
#建立庫
create database opt
use opt
#建立表
create table test(id int(11),num int(11),k1 char(2),k2 char(4),dt timestamp not null);
#插入100萬資料
delimiter //
create procedure rand_data(in num int)
begin
declare str char(62) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
declare str2 char(2);
declare str4 char(4);
declare i int default 0;
while i<num do
set str2=concat(substring(str,1+floor(rand()*61),1),substring(str,1+floor(rand()*61),1));
set str4=concat(substring(str,1+floor(rand()*61),2),substring(str,1+floor(rand()*61),2));
set i=i+1;
insert into test values(i,floor(rand()*num),str2,str4,now());
end while;
end;
//
delimiter;
mysql> call rand_data(1000000)
2.檢視資料可用性
mysql -uroot -p123
select count(*) from opt.test;
3.進行壓力測試
mysqlslap --defaults-file=/etc/my.cnf \
--concurrency=100 --iterations=1 --create-schema='opt' \
--query="select * from opt.test where num='505037'" engine=innodb \
--number-of-queries=20000 -uroot -p123 -verbose