日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

关于mysql archive存储引擎-专门存储审计和日志数据

發布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于mysql archive存储引擎-专门存储审计和日志数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來源:http://60.29.242.49/?p=60

政府還有一個讓數據庫專家攤上更多事情的職能,就是安全控制和數據審計。 那些管理著海量數據倉庫的企業官員常常得回答諸如“何人何時修改了什么”或者“何人何時查看了什么”這樣的提問。那些擁有數以千計的員工,開展著不計其數 的業務的企業,每天都會產生出大量的日志記錄數據,而且必須將其好好保存。為了幫助數據庫專家應對數據爆炸的挑戰,MySQL5.0引入了一種新的數據存 儲引擎,叫做Archive。這個先進的數據管理工具,讓MySQL的專家們擁有了處理和管理海量數據的新式武器。

?

?

Archive引擎作用:?為大量很少 引用的歷史、歸檔、或安全審計信息的存儲和檢索提供了完美的解決方案,區別于InnoDB、MyISAM提供壓縮功能,沒有索引。

?

?

?

?

關于Archive存儲引擎的介紹和性能測試的文章:http://dev.mysql.com/tech-resources/articles/storage-engine.html

不喜歡英文的童鞋可以看這篇翻譯過來的文章(推薦,翻譯的不錯):http://guangxin.name/2009/04/mysql50-archive-1.html

?

?

根據英文的測試結論來看,Archive表比MyISAM表要小 大約75%,比支持事務處理的InnoDB表小大約83%。當數據量非常大的時候Archive的插入性能表現會較MyISAM為佳。

?

?

Archive表的性能是否可能超過MyISAM?答案是肯定 的。根據MySQL工程師的資料,當表內的數據達到1.5GB這個量級,CPU又比較快的時候,Archive表的執行性能就會超越MyISAM表。因為 這個時候,CPU會取代I/O子系統成為性能瓶頸。別忘了Archive表比其他任何類型的表執行的物理I/O操作都要少。

?

?

較小的空間占用也能在你移植MySQL數據的時候發揮作用。當你 需要把數據從一臺MySQL服務器轉移到另一臺的時候,Archive表可以方便地移植到新的MySQL環境,你只需將保存Archive表的底層文件復 制過去就可以了。

?

?

本著懷疑一切的精神,本人進行了如下的測試:

?

①建立一個iplog的表:

mysql> create table iplog(id int auto_increment not null primary key,userid int,ip char(15),visit_time datetime) engine=innodb;

?

②使用python腳本插入50w數據:

?

?

#!/usr/bin/mysql

import MySQLdb

?

conn = MySQLdb.connect(host=”localhost”,user=”root”,passwd=”asdf”,db=”test”,unix_socket=”/data/mysql_3306/mysql.sock”)

cursor = conn.cursor()

for i in range(0,500000):

sql = “insert into iplog(userid,ip,visit_time) values(%s,’127.0.0.1′,now())”%i

cursor.execute(sql)

cursor.close()

conn.commit()

conn.close()

?

③分別創建iplog對應的archive、 InnoDB、MyISAM對應表格并插入數據

?

?

mysql> create table iplog_archive engine=archive as select * from iplog;

Query OK, 500000 rows affected (2.73 sec)

Records: 500000 ?Duplicates: 0 ?Warnings: 0

?

mysql> create table iplog_myisam engine=myisam as select * from iplog;

Query OK, 500000 rows affected (1.39 sec)

Records: 500000 ?Duplicates: 0 ?Warnings: 0

?

mysql> create table iplog_innodb engine=innodb as select * from iplog;

Query OK, 500000 rows affected (4.78 sec)

Records: 500000 ?Duplicates: 0 ?Warnings: 0

?

?

④比較它們的大小

?

?

mysql> select table_name,engine,ROUND(data_length/1024/1024,2) total_size_mb,table_rows from information_schema.tables

-> where table_schema = ‘test’ and table_name like ‘iplog_%’;

+—————+———+—————+————+

| table_name ? ?| engine ?| total_size_mb | table_rows |

+—————+———+—————+————+

| iplog_archive | ARCHIVE | ? ? ? ? ?2.10 | ? ? 500000 |

| iplog_innodb ?| InnoDB ?| ? ? ? ? 30.56 | ? ? 500289 |

| iplog_myisam ?| MyISAM ?| ? ? ? ? 29.56 | ? ? 500000 |

+—————+———+—————+————+

3 rows in set (0.01 sec)

?

⑤測試select性能:

?

?

mysql> select * from iplog_archive where userid=250000;

+——–+——–+———–+———————+

| id ? ? | userid | ip ? ? ? ?| visit_time ? ? ? ? ?|

+——–+——–+———–+———————+

| 750001 | 250000 | 127.0.0.1 | 2010-02-01 10:54:20 |

+——–+——–+———–+———————+

1 row in set (0.31 sec)

?

mysql> select * from iplog_innodb where userid=250000;

+——–+——–+———–+———————+

| id ? ? | userid | ip ? ? ? ?| visit_time ? ? ? ? ?|

+——–+——–+———–+———————+

| 750001 | 250000 | 127.0.0.1 | 2010-02-01 10:54:20 |

+——–+——–+———–+———————+

1 row in set (0.48 sec)

?

mysql> select * from iplog_myisam where userid=250000;

+——–+——–+———–+———————+

| id ? ? | userid | ip ? ? ? ?| visit_time ? ? ? ? ?|

+——–+——–+———–+———————+

| 750001 | 250000 | 127.0.0.1 | 2010-02-01 10:54:20 |

+——–+——–+———–+———————+

1 row in set (0.10 sec)

?

⑥測試insert性能():

使用python腳本再插入50w數據,查看插入性能,腳本如下,沒有寫 的很復雜,測試InnoDB或者MyISAM要修改代碼

?

?

#!/usr/bin/mysql

import MySQLdb

?

conn = MySQLdb.connect(host=”localhost”,user=”root”,passwd=”asdf”,db=”test”,unix_socket=”/data/mysql_3306/mysql.sock”)

cursor = conn.cursor()

for i in range(500001,1000000):

sql = “insert into iplog_archive(userid,ip,visit_time) values(%s,’127.0.0.1′,now())”%i

cursor.execute(sql)

cursor.close()

conn.commit()

conn.close()

?

?

archive

?

real ? ?1m30.467s

user ? ?0m22.270s

sys ? ? 0m12.670s

?

?

InnoDB

?

real ? ?0m48.622s

user ? ?0m18.722s

sys ? ? 0m9.322s

?

?

MyISAM

?

real ? ?1m32.129s

user ? ?0m13.183s

sys ? ? 0m5.624s

?

?

?

?

測試結果是archive可以大規模的減少空間減少%93(這個 與表有關系),select性能介于MyISAM和InnoDB之間,大規模insert時效率比MyISAM和InnoDB高,至于原因“因為這個時 候,CPU會取代I/O子系統成為性能瓶頸。別忘了Archive表比其他任何類型的表執行的物理I/O操作都要少。”

?

歡迎大家共同探討,包括測試用例以及任何想法。

?

關于time命令的執行結果關于real、user、sys說明

1)實際時間(real time): 從command命令行開始執行到運行終止的消逝時間;

2)用戶CPU時間(user CPU time): 命令執行完成花費的用戶CPU時間,即命令在用戶態中執行時間總和;

3)系統CPU時間(system CPU time): 命令執行完成花費的系統CPU時間,即命令在核心態中執行時間總和。

轉載于:https://www.cnblogs.com/itcomputer/articles/4660780.html

總結

以上是生活随笔為你收集整理的关于mysql archive存储引擎-专门存储审计和日志数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。