Ubuntu上的ibdata1文件去哪里了?

在Ubuntu桌面版上使用apt安装MySQL之后,无论使用find还是locate都找不到MySQL的重要文件ibdata1。解决问题的方法很简单,就是切换到root账号之下。

$ locate ibdata1 
$ 
$ su
# locate ibdata1
# /var/lib/mysql/ibdata1

MySQL的数据文件位置

root@TC8304:/var/lib/mysql# ls
auto.cnf         ibdata1      ibtmp1              phpmyadmin  TC8304-slow.log
debian-5.7.flag  ib_logfile0  mysql               sujx
ib_buffer_pool   ib_logfile1  performance_schema  sys

MySQL的性能测试

常用性能测试工具

  • sysbench
  • tpcc-mysql
  • mysqlslap

性能衡量指标

  • 服务吞吐量(TPS\QPS)
    tps是每秒内的事务数,比如执行了dml操作,那么相应的tps会增加;
    qps是指每秒内查询次数,比如执行了select操作,相应的qps会增加。
  • 服务响应时间
  • 服务的并发性

sysbench

  • 业界知名
  • 支持磁盘、cpu和数据库
  • 支持多种数据库

测试准备

$ sysbench --test=oltp --oltp-table-size=1000000 --mysql-host=127.0.0.1 --mysql-user=sujx --mysql-db=sujx --mysql-password=****  prepare

执行测试

$ sysbench --num-threads=16 --max-requests=100000  --test=oltp --oltp-table-size=1000000 --oltp-read-only --mysql-host=127.0.0.1 --mysql-user=sujx --mysql-db=sujx --mysql-password=**** run

测试结果

No DB drivers specified, using mysql
Running the test with following options:
Number of threads: 16

Doing OLTP test.
Running mixed OLTP test
Doing read-only test
Using Special distribution (12 iterations,  1 pct of values are returned in 75 pct cases)
Using "BEGIN" for starting transactions
Using auto_inc on the id column
Maximum number of requests for OLTP test is limited to 100000
Threads started!
Done.

OLTP test statistics:
    queries performed:
        read:                            1400028
        write:                           0
        other:                           200004
        total:                           1600032
    transactions:                        100002 (1936.18 per sec.)
    deadlocks:                           0      (0.00 per sec.)
    read/write requests:                 1400028 (27106.57 per sec.)
    other operations:                    200004 (3872.37 per sec.)

Test execution summary:
    total time:                          51.6490s
    total number of events:              100002
    total time taken by event execution: 825.9599
    per-request statistics:
         min:                                  2.09ms
         avg:                                  8.26ms
         max:                                 20.08ms
         approx.  95 percentile:              11.48ms

Threads fairness:
    events (avg/stddev):           6250.1250/10.94
    execution time (avg/stddev):   51.6225/0.00

Tpcc-mysql

  1. Ubuntu下执行安装
$ sudo apt install -y git mysql-server libmysqlclient-dev  
$ git clone https://github.com/Percona-Lab/tpcc-mysql.git
$ cd tpcc-mysql/src
$ make 
$ export LD_LIBRARY_PATH=$MYSQL_HOME/lib
export C_INCLUDE_PATH=$MYSQL_HOME/include
export PATH=$MYSQL_HOME/bin:$PATH
mysql>create database tpcc;
mysql>source create_table.sql
mysql>source add_fkey_idx.sql
$ ./tpcc_load 127.0.0.1 sujx sujx ***** 5
./tpcc_start -h 127.0.0.1 -d sujx -u sujx -p ***** -w 5 -c 16 -r 1 -l 10 -i 1 -f report-mysql-tpcc.txt

输出结果

STOPPING THREADS................

<Raw Results>
  [0] sc:3243  lt:0  rt:0  fl:0 
  [1] sc:3235  lt:0  rt:0  fl:0 
  [2] sc:325  lt:0  rt:0  fl:0 
  [3] sc:323  lt:0  rt:0  fl:0 
  [4] sc:325  lt:0  rt:0  fl:0 
 in 10 sec.

<Raw Results2(sum ver.)>
  [0] sc:3243  lt:0  rt:0  fl:0 
  [1] sc:3242  lt:0  rt:0  fl:0 
  [2] sc:325  lt:0  rt:0  fl:0 
  [3] sc:323  lt:0  rt:0  fl:0 
  [4] sc:325  lt:0  rt:0  fl:0 

<Constraint Check> (all must be [OK])
 [transaction percentage]
        Payment: 43.42% (>=43.0%) [OK]
   Order-Status: 4.36% (>= 4.0%) [OK]
       Delivery: 4.33% (>= 4.0%) [OK]
    Stock-Level: 4.36% (>= 4.0%) [OK]
 [response time (at least 90% passed)]
      New-Order: 100.00%  [OK]
        Payment: 100.00%  [OK]
   Order-Status: 100.00%  [OK]
       Delivery: 100.00%  [OK]
    Stock-Level: 100.00%  [OK]

<TpmC>                 19458.000 TpmC

总结

  • IO测试要远大于内存、CPU测试要小于内存;
  • 测试时间应当大于60分钟;
  • sysbench倾向于测试MySQL性能,TPCC更接近业务;
  • 运行测试程序需要同时监控机器负载、MySQL各项监控指标

tips:
- tpcc的详细介绍和使用tpcc
- Sysbench的介绍和具体使用sysbench

使用R进行商业调查

调查某个酒馆的食品销售情况,具体的数据报错在menus.csv文件中。

加载数据以及用于数据操作以及绘图的程序包

> library(dplyr)
> library(ggplot2)
> menus <- read.csv("code/AmosWin/Chapter04/menus.csv",stringsAsFactors = FALSE,colClasses = c("factor","Date","numeric"))
> menus %>% names
[1] "品名"   "日期"   "销售额"
> head(menus)
    品名       日期 销售额
1 关东煮 2015-03-01   4046
2 关东煮 2015-03-02   3437
3 关东煮 2015-03-03   3191
4 关东煮 2015-03-04   3499
5 关东煮 2015-03-05   3536
6 关东煮 2015-03-06   3841
筛选出饭团的销售额

> fantuan <- menus %>% filter(品名 == "饭团")
> ggplot(fantuan,aes(日期,销售额))+geom_line()+scale_x_date()+ggtitle("饭团的销售额")
筛选出炒饭的销售额

> chaofan <- menus %>% filter(品名 == "炒饭")
> ggplot(chaofan,aes(日期,销售额))+geom_line()+scale_x_date()+ggtitle("炒饭的销售额")
筛选出各种面条的销售情况

> noodles <- menus %>% filter(品名 %in% c("意大利面","酱汁炒面","乌冬面","拉面","什锦面"))
> ggplot(noodles,aes(日期,销售额))+geom_line()+scale_x_date()+facet_wrap(~品名)+ggtitle("面条的销售额")
筛选牛奶的销售情况
> milk2 <-menus %>% filter(品名 == "牛奶")
> milk2 %>% ggplot(aes(日期,销售额))+geom_line()+scale_x_date()+ggtitle("牛奶销售额")

生成面制品和米制品的散点图矩阵
> install.packages("tidyr")
> library(tidyr)
> noodles2 <- menus %>% filter(品名 %in% c("饭团","味增汤","咖喱","茶泡饭","意大利面","酱汁炒面","乌冬面","什锦面")) %>% select(品名,销售额,日期) %>% spread(品名,销售额)
> noodles2 %>% head
        日期 茶泡饭  饭团 酱汁炒面  咖喱 什锦面 乌冬面 意大利面
1 2015-03-01  12751 23698     8460 15594   6245   8849     5947
2 2015-03-02   8881 19505     7412 10959   4469   6063     5010
3 2015-03-03  10006 19974     7377 12073   5159   6060     5263
4 2015-03-04   9480 18208     6959 12249   4399   6283     5150
5 2015-03-05   9752 19624     6518 11690   4791   7138     4883
6 2015-03-06  12534 23872    10249 16332   6039   9264     6410
> noodles2 [,-1] %>% cor()
              茶泡饭        饭团   酱汁炒面        咖喱     什锦面     乌冬面   意大利面
茶泡饭    1.00000000 -0.00971532  0.6080210  0.81505643  0.5924683  0.6293278  0.6165647
饭团     -0.00971532  1.00000000 -0.5029012 -0.02819566 -0.5041264 -0.4892078 -0.4866258
酱汁炒面  0.60802102 -0.50290122  1.0000000  0.62001363  0.9133528  0.8953787  0.9122944
咖喱      0.81505643 -0.02819566  0.6200136  1.00000000  0.6144427  0.6185421  0.6370305
什锦面    0.59246831 -0.50412641  0.9133528  0.61444273  1.0000000  0.9099195  0.9101794
乌冬面    0.62932779 -0.48920782  0.8953787  0.61854210  0.9099195  1.0000000  0.8979937
意大利面  0.61656471 -0.48662582  0.9122944  0.63703048  0.9101794  0.8979937  1.0000000
> noodles2[,-1] %>% pairs

乌冬面与饭团的散点图
> udon <-menus %>% filter(品名 %in% c("饭团","乌冬面")) %>% spread(品名,销售额)
> udon %>% ggplot(aes(乌冬面, 饭团))+geom_point()+ggtitle("乌冬面和饭团的散点图")

饭团与牛奶的散点图,证实牛奶与饭团的正相关性
> milk <- menus %>% filter(品名 %in% c("饭团","牛奶")) %>% spread(品名,销售额)
> milk %>% ggplot(aes(饭团,牛奶))+geom_point(size=2,color="grey50")+geom_smooth(method = "lm",se=FALSE)+ggtitle("饭团与牛奶的散点图")

证明冰激凌的销售额与气温的正相关性
> icecream <- read.csv("code/AmosWIN/Chapter04/icecream.csv")
> icecream %>% lm(销售量~气温,data =.)

Call:
lm(formula = 销售量 ~ 气温, data = .)

Coefficients:
(Intercept)         气温  
     57.167        5.216  

> icecream %>% ggplot(aes(销售量,气温))+geom_point(size=2)+geom_smooth(method="lm",se=FALSE)

使用R进行简易调查

来看一个简单的调查问卷结果分析:

> survey <- read.csv(file.choose())
> survey
    立场      回答6      回答7
1   顾客   商品齐全     无回答
2   顾客   商品齐全     无回答
3   顾客   商品齐全 传统吉祥物
4   顾客   商品齐全 萌系美少女
5   顾客   商品齐全 萌系美少女
6   顾客   商品齐全 传统吉祥物
7   顾客   商品齐全 萌系美少女
8   顾客   商品齐全 萌系美少女
9   顾客   商品齐全 传统吉祥物
10  顾客   商品齐全     无回答
11  顾客   商品齐全 传统吉祥物
12  顾客   商品齐全     无回答
13  顾客   商品齐全 萌系美少女
14  顾客   商品齐全     无回答
15  顾客   商品齐全 传统吉祥物
16  顾客   商品齐全 传统吉祥物
17  顾客   商品齐全 萌系美少女
18  顾客   商品齐全 萌系美少女
19  店主   商品齐全 萌系美少女
20  店主   商品齐全 萌系美少女
21  店主   商品齐全 萌系美少女
22  店主   商品齐全 萌系美少女
23  店主   商品齐全 萌系美少女
24  店主   商品齐全 萌系美少女
25  店主   商品齐全 萌系美少女
26  店主   商品齐全 萌系美少女
27  店主   商品齐全 萌系美少女
28  店主   商品齐全 萌系美少女
29  店主   商品齐全 萌系美少女
30  店主   商品齐全 萌系美少女
31  店主   商品齐全 萌系美少女
32  店主   商品齐全 萌系美少女
33  店主   商品齐全 萌系美少女
34  店主   商品齐全 萌系美少女
35  店主   商品齐全 萌系美少女
36  店主   商品齐全 萌系美少女
37  店主   商品齐全 萌系美少女
38  店主   商品齐全 萌系美少女
39  店主   商品齐全 萌系美少女
40  店主   商品齐全 萌系美少女
41  店主   商品齐全 萌系美少女
42  店主   商品齐全 萌系美少女
43  店主   商品齐全 萌系美少女
44  店主   商品齐全 萌系美少女
45  店主   商品齐全 萌系美少女
46  店主   商品齐全 萌系美少女
47  店主   商品齐全 萌系美少女
48  店主   商品齐全 萌系美少女
49  店主   商品齐全 萌系美少女
50  店主   商品齐全 萌系美少女
51  店主   商品齐全 萌系美少女
52  店主   商品齐全 萌系美少女
53  店主   商品齐全 萌系美少女
54  店主   商品齐全 萌系美少女
55  店主   商品齐全 萌系美少女
56  店主   商品齐全 萌系美少女
57  店主   商品齐全 萌系美少女
58  店主   商品齐全 萌系美少女
59  店主   商品齐全 萌系美少女
60  店主   商品齐全 萌系美少女
61  顾客       促销 传统吉祥物
62  顾客       促销     无回答
63  顾客       促销 萌系美少女
64  顾客       促销 传统吉祥物
65  顾客       促销     无回答
66  顾客       促销 传统吉祥物
67  顾客       促销 萌系美少女
68  顾客       促销 传统吉祥物
69  顾客       促销 萌系美少女
70  顾客       促销 萌系美少女
71  顾客       促销 传统吉祥物
72  顾客       促销 传统吉祥物
73  顾客       促销 传统吉祥物
74  顾客       促销     无回答
75  顾客       促销 萌系美少女
76  顾客       促销 萌系美少女
77  顾客       促销 萌系美少女
78  顾客       促销 萌系美少女
79  顾客       促销 萌系美少女
80  顾客       促销     无回答
81  顾客       促销     无回答
82  顾客       促销 萌系美少女
83  顾客       促销 萌系美少女
84  顾客       促销 传统吉祥物
85  顾客       促销 传统吉祥物
86  顾客       促销 萌系美少女
87  顾客       促销 传统吉祥物
88  顾客       促销     无回答
89  顾客       促销 传统吉祥物
90  顾客       促销 萌系美少女
91  顾客       促销 传统吉祥物
92  顾客       促销 传统吉祥物
93  顾客       促销     无回答
94  顾客       促销     无回答
95  顾客       促销 传统吉祥物
96  顾客       促销     无回答
97  顾客       促销 传统吉祥物
98  顾客       促销 萌系美少女
99  顾客       促销 萌系美少女
100 店主       促销 萌系美少女
101 店主       促销 萌系美少女
102 店主       促销 萌系美少女
103 店主       促销 萌系美少女
104 店主       促销 萌系美少女
105 店主       促销 萌系美少女
106 店主       促销 萌系美少女
107 店主       促销 萌系美少女
108 店主       促销 萌系美少女
109 店主       促销 萌系美少女
110 店主       促销 萌系美少女
111 顾客 服务态度好 传统吉祥物
112 顾客 服务态度好     无回答
113 顾客 服务态度好 萌系美少女
114 顾客 服务态度好     无回答
115 顾客 服务态度好 传统吉祥物
116 顾客 服务态度好 传统吉祥物
117 顾客 服务态度好 萌系美少女
118 顾客 服务态度好 萌系美少女
119 顾客 服务态度好 传统吉祥物
120 顾客 服务态度好     无回答
121 顾客 服务态度好     无回答
122 顾客 服务态度好     无回答
123 顾客 服务态度好 萌系美少女
124 顾客 服务态度好 萌系美少女
125 顾客 服务态度好 传统吉祥物
126 顾客 服务态度好 萌系美少女
127 顾客 服务态度好 传统吉祥物
128 顾客 服务态度好     无回答
129 顾客 服务态度好 萌系美少女
130 顾客 服务态度好 传统吉祥物
131 顾客 服务态度好     无回答
132 顾客 服务态度好 传统吉祥物
133 顾客 服务态度好 萌系美少女
134 顾客 服务态度好     无回答
135 顾客 服务态度好 传统吉祥物
136 顾客 服务态度好 传统吉祥物
137 顾客 服务态度好 萌系美少女
138 顾客 服务态度好 萌系美少女
139 顾客 服务态度好     无回答
140 顾客 服务态度好     无回答
141 顾客 服务态度好 传统吉祥物
142 顾客 服务态度好 萌系美少女
143 顾客 服务态度好 萌系美少女
144 顾客 服务态度好 萌系美少女
145 顾客 服务态度好 传统吉祥物
146 店主 服务态度好 萌系美少女
147 店主 服务态度好 萌系美少女
148 店主 服务态度好 萌系美少女
149 店主 服务态度好 萌系美少女
150 店主 服务态度好 萌系美少女
151 店主 服务态度好 萌系美少女
152 店主 服务态度好 萌系美少女
153 店主 服务态度好 萌系美少女
154 店主 服务态度好 萌系美少女
155 顾客       活动 传统吉祥物
156 顾客       活动 传统吉祥物
157 顾客       活动     无回答
158 顾客       活动 传统吉祥物
159 顾客       活动     无回答
160 顾客       活动 传统吉祥物
161 顾客       活动 传统吉祥物
162 顾客       活动     无回答
163 顾客       活动 萌系美少女
164 顾客       活动 传统吉祥物
165 顾客       活动     无回答
166 店主       活动 萌系美少女
167 店主       活动 萌系美少女
168 店主       活动 萌系美少女
169 店主       活动 萌系美少女
170 店主       活动 萌系美少女
171 店主       活动 萌系美少女
172 店主       活动 萌系美少女
173 店主       活动 萌系美少女
174 店主       活动 萌系美少女
175 店主       活动 萌系美少女
176 店主       活动 萌系美少女
177 店主       活动 萌系美少女
178 店主       活动 萌系美少女
179 店主       活动 萌系美少女
180 店主       活动 萌系美少女
181 店主       活动 萌系美少女
182 店主       活动 萌系美少女
183 店主       活动 萌系美少女
184 店主       活动 萌系美少女
185 店主       活动 萌系美少女
186 店主       活动 萌系美少女
187 店主       活动 萌系美少女
188 店主       活动 萌系美少女
189 店主       活动 萌系美少女
190 店主       活动 萌系美少女
191 店主       活动 萌系美少女
192 店主       活动 萌系美少女
193 店主       活动 萌系美少女
194 店主       活动 萌系美少女
195 店主       活动 萌系美少女
196 店主       活动 萌系美少女
197 店主       活动 萌系美少女
198 店主       活动 萌系美少女
199 店主       活动 萌系美少女
200 店主       活动 萌系美少女
201 店主       活动 传统吉祥物
202 店主       活动 传统吉祥物
203 店主       活动 传统吉祥物

从中选择出需要调查的关注数据

> survey %>% select(立场,回答6)
    立场      回答6
1   顾客   商品齐全
2   顾客   商品齐全
3   顾客   商品齐全
4   顾客   商品齐全
5   顾客   商品齐全
6   顾客   商品齐全
7   顾客   商品齐全
8   顾客   商品齐全
9   顾客   商品齐全
10  顾客   商品齐全
11  顾客   商品齐全
12  顾客   商品齐全
13  顾客   商品齐全
14  顾客   商品齐全
15  顾客   商品齐全
16  顾客   商品齐全
17  顾客   商品齐全
18  顾客   商品齐全
19  店主   商品齐全
20  店主   商品齐全
21  店主   商品齐全
22  店主   商品齐全
23  店主   商品齐全
24  店主   商品齐全
25  店主   商品齐全
26  店主   商品齐全
27  店主   商品齐全
28  店主   商品齐全
29  店主   商品齐全
30  店主   商品齐全
31  店主   商品齐全
32  店主   商品齐全
33  店主   商品齐全
34  店主   商品齐全
35  店主   商品齐全
36  店主   商品齐全
37  店主   商品齐全
38  店主   商品齐全
39  店主   商品齐全
40  店主   商品齐全
41  店主   商品齐全
42  店主   商品齐全
43  店主   商品齐全
44  店主   商品齐全
45  店主   商品齐全
46  店主   商品齐全
47  店主   商品齐全
48  店主   商品齐全
49  店主   商品齐全
50  店主   商品齐全
51  店主   商品齐全
52  店主   商品齐全
53  店主   商品齐全
54  店主   商品齐全
55  店主   商品齐全
56  店主   商品齐全
57  店主   商品齐全
58  店主   商品齐全
59  店主   商品齐全
60  店主   商品齐全
61  顾客       促销
62  顾客       促销
63  顾客       促销
64  顾客       促销
65  顾客       促销
66  顾客       促销
67  顾客       促销
68  顾客       促销
69  顾客       促销
70  顾客       促销
71  顾客       促销
72  顾客       促销
73  顾客       促销
74  顾客       促销
75  顾客       促销
76  顾客       促销
77  顾客       促销
78  顾客       促销
79  顾客       促销
80  顾客       促销
81  顾客       促销
82  顾客       促销
83  顾客       促销
84  顾客       促销
85  顾客       促销
86  顾客       促销
87  顾客       促销
88  顾客       促销
89  顾客       促销
90  顾客       促销
91  顾客       促销
92  顾客       促销
93  顾客       促销
94  顾客       促销
95  顾客       促销
96  顾客       促销
97  顾客       促销
98  顾客       促销
99  顾客       促销
100 店主       促销
101 店主       促销
102 店主       促销
103 店主       促销
104 店主       促销
105 店主       促销
106 店主       促销
107 店主       促销
108 店主       促销
109 店主       促销
110 店主       促销
111 顾客 服务态度好
112 顾客 服务态度好
113 顾客 服务态度好
114 顾客 服务态度好
115 顾客 服务态度好
116 顾客 服务态度好
117 顾客 服务态度好
118 顾客 服务态度好
119 顾客 服务态度好
120 顾客 服务态度好
121 顾客 服务态度好
122 顾客 服务态度好
123 顾客 服务态度好
124 顾客 服务态度好
125 顾客 服务态度好
126 顾客 服务态度好
127 顾客 服务态度好
128 顾客 服务态度好
129 顾客 服务态度好
130 顾客 服务态度好
131 顾客 服务态度好
132 顾客 服务态度好
133 顾客 服务态度好
134 顾客 服务态度好
135 顾客 服务态度好
136 顾客 服务态度好
137 顾客 服务态度好
138 顾客 服务态度好
139 顾客 服务态度好
140 顾客 服务态度好
141 顾客 服务态度好
142 顾客 服务态度好
143 顾客 服务态度好
144 顾客 服务态度好
145 顾客 服务态度好
146 店主 服务态度好
147 店主 服务态度好
148 店主 服务态度好
149 店主 服务态度好
150 店主 服务态度好
151 店主 服务态度好
152 店主 服务态度好
153 店主 服务态度好
154 店主 服务态度好
155 顾客       活动
156 顾客       活动
157 顾客       活动
158 顾客       活动
159 顾客       活动
160 顾客       活动
161 顾客       活动
162 顾客       活动
163 顾客       活动
164 顾客       活动
165 顾客       活动
166 店主       活动
167 店主       活动
168 店主       活动
169 店主       活动
170 店主       活动
171 店主       活动
172 店主       活动
173 店主       活动
174 店主       活动
175 店主       活动
176 店主       活动
177 店主       活动
178 店主       活动
179 店主       活动
180 店主       活动
181 店主       活动
182 店主       活动
183 店主       活动
184 店主       活动
185 店主       活动
186 店主       活动
187 店主       活动
188 店主       活动
189 店主       活动
190 店主       活动
191 店主       活动
192 店主       活动
193 店主       活动
194 店主       活动
195 店主       活动
196 店主       活动
197 店主       活动
198 店主       活动
199 店主       活动
200 店主       活动
201 店主       活动
202 店主       活动
203 店主       活动

展现数据

> table1 <- survey %>% select(立场,回答6) %>% table;table1
      回答6
立场   促销 服务态度好 活动 商品齐全
  店主   11          9   38       42
  顾客   39         35   11       18
> library(ggplot2)
> table1 %>% as.data.frame %>% ggplot(aes (x=立场,y=Freq, fill=回答6)) + geom_bar(stat="identity") + ylab("人数")

导入用户调查答卷表之后,select出人员类别和对销售有影响的因素,然后使用图形化的方式表达出不同角色的人员对销售决定因素的主观差异。

由上图可见,店主注重商品齐全度和活动,而顾客更看重销售态度和促销活动。