SlideShare a Scribd company logo
MySQL 新技术探索与实践 彭立勋 WWW.PengLiXun.COM Alibaba DBA Team
新技术风起云涌 以 Percona/XtraDB 为代表的 MySQL 分支 ( MariaDB 、 Drizzle…… ) 以 HandlerSocket 为代表的新接口 ( Memcached Plugin…… ) 以 XFS/EXT4 为代表的高性能文件系统 ( Btrfs 、 ZFS…… ) 以 Flashcache 为代表的二级缓存架构 ( InnoDB Secondary Buffer Pool…… ) 以 Fusion-IO 为代表的 PCI-E SSD 以 Intel C Compiler 为代表的高性能编译器 ……
Topics ICC XFS Percona HandlerSocket
Why ICC 为何自己编译 MySQL ? 官方无静态编译的 Innodb Plugin 版本 可以加入第三方 Patch 或修改源码 可以将第三方库静态编译到可执行文件( TCMalloc ) 为何使用 ICC 编译? 原生 Intel SSE2 指令集,浮点运算效率高 内置 Intel Math Lib ,提升数学函数效率 内置 Intel Thread Lib ,提升多线程稳定性和效率
ICC vs GCC(1) 硬件环境 CPU : Intel Xoen 5410 内存: 24G 硬盘: 10*15k SAS RAID10
ICC vs GCC(2) 硬件环境 CPU : Intel Xoen 5520 内存: 24G 硬盘: 10*15k SAS RAID10 MySQL : 5.1.40 Enterprise
Why XFS 为何不使用 EXT3 ? 对 SSD 设备不友好, SSD 是未来数据存储设备的趋势 删除文件速度慢,导致数据库 Hang 对大文件读写性能不佳 为何选择 XFS ? SGI 已经在其大型机上应用多年 (From 1994) ,稳定可靠 对 SSD 设备友好(延迟分配) 高并发下竞争少,性能好(分配组特性) 支持条带化分配,使得文件系统分配与 RAID 条带完全对齐,最大化吞吐量 对大文件操作友好(基于 Extent 的分配方式)
Why NOT EXT4? EXT4 也是一款非常好的文件系统 性能与 XFS 接近,甚至好一些 并且可以从 EXT3 无缝升级 But ...... 我们没有运维 EXT4 的经验
XFS Tips 分配组( Allocation Groups ) 延时分配( Delay Allocation ) 多线程 DirectIO 全 B+ Tree 管理空间
EXT3 vs XFS(1) 硬件环境 CPU : Intel Xoen 5520 内存: 24G 硬盘: 10*15k SAS RAID10 MySQL : 5.1.40 Enterprise
EXT3 vs XFS(2) 硬件环境 CPU : Intel Xoen 5520 内存: 24G 硬盘: 10*15k SAS RAID10 MySQL : 5.1.40 Enterprise
Why Percona Percona 的优势 对 SSD 设备有专门的优化 对 Flashcache 有 SQL 层接口 允许 XtraDB 静态编译 支持多种页大小 提供额外的监控参数 有被生产环境考验过( SOHU ) Percona 存在的问题 引入第三方补丁较多,可能存在 Bug (可以接受)
New Future(1) 文件格式 Compressed 结构: CPU 换 IO Dynamic 结构: ROW 中不存大字段前缀 IO 参数 IO 容量: innodb_io_capacity IO 线程数: innodb_read_io_threads( 预读 ) 、 innodb_write_io_threads( 赃页回写 ) 、 innodb_use_purge_thread( 清理 UNDO) 赃页刷新方式 innodb_adaptive_checkpoint (XtraDB) innodb_adaptive_flushing (InnoDB Plugin)
New Future(2) 扩展性 增强多处理机性能( About 24 Cores ) 拆分 Buffer Pool Mutex ( buf_pool_mutex 、 LRU_list_mutex 、 flush_list_mutex 、 page_hash_latch 、 free_list_mutex 、 zip_free_mutex 、 zip_hash_mutex ) 功能 可变页大小( innodb_page_size ) 可控的 Insert Buffering 和 Adaptive Hash Index 可配置多回滚段( innodb_extra_rsegments ) 快速 Warn Up ( innodb_buffer_pool_shm_key  、 XTRA_LRU_DUMP/XTRA_LRU_RESTORE ) 快速创建索引和索引快速重命名
New Future(3) 监控 扩展 information_schema INDEX_STATISTICS TABLE_STATISTICS USER_STATISTICS 扩展 InnoDB 统计 INNODB_TABLE_STATS INNODB_INDEX_STATS For Example 可以获取未使用过的索引 可以获取索引被用于访问的行数 可以获取当前锁定信息 可以获取用户连接统计信息 ……
Percona Performance 每秒处理 50~75 万行读取 每秒处理 2.5K~5K Query 每秒网卡吞吐 400~750Mbps
Why Handler Socket SQL 执行的 Oprofile samples  %  app name  symbol name 259130  4.5199   mysqld  MYSQLparse(void*) 196841  3.4334  mysqld  my_pthread_fastmutex_lock 106439  1.8566  libc-2.5.so  _int_malloc …… 63435  1.1065   mysqld  JOIN::optimize() 55825  0.9737  vmlinux  wakeup_stack_begin 55054  0.9603   mysqld  MYSQLlex(void*, void*) 50833  0.8867  libpthread-2.5.so  pthread_mutex_trylock 49602  0.8652   ha_innodb_plugin.so.0.0.0 row_search_for_mysql …… 46499  0.8111  libc-2.5.so  malloc
Why Handler Socket HandlerSocket 执行的 Oprofile samples  %  app name  symbol name 984785  5.9118   bnx2  /bnx2 847486  5.0876  ha_innodb_plugin.so.0.0.0 ut_delay 545303  3.2735  ha_innodb_plugin.so.0.0.0 btr_search_guess_on_hash 317570  1.9064   ha_innodb_plugin.so.0.0.0 row_search_for_mysql …… 206057  1.2370  HandlerSocket.so  dena::hstcpsvr_worker::run_one_ep() 183330  1.1006  ha_innodb_plugin.so.0.0.0 mutex_spin_wait 175738  1.0550  HandlerSocket.so  dena::dbcontext::  cmd_find_internal(dena::dbcallback_i&, dena::prep_stmt const&,  ha_rkey_function, dena::cmd_exec_args const&) …… 149611  0.8981  ha_innodb_plugin.so.0.0.0 row_sel_store_mysql_rec
HS vs MC vs SQL 硬件环境 CPU : Intel Xoen 5520 内存: 24G 硬盘: 10*15k SAS RAID10 MySQL : 5.1.48
Our Solution(1)
Our Solution(2) RAID 卡 关闭预读:预读效果不佳,直接读取磁盘 关闭磁盘 Cache : RAID 卡缓存已经缓冲了写操作,磁盘 Cache 无电池 条带:默认 64K ,调整为 1M Linux IO 调度: /sys/block/sdb/queue/scheduler ,默认 cfq ,调整为 deadline 减少预读: /sys/block/sdb/queue/read_ahead_kb ,默认 128 ,调整为 16 增大队列: /sys/block/sdb/queue/nr_requests ,默认 128 ,调整为 512 NUMA 策略: numactl --interleave=all  或  --cpunodebind=0 --localalloc
Our Solution(3) Flashcache Block Size=4K :与 SSD 设备页对齐 dirty_thresh_pct = 90 :一个 SET 内 90% 都是脏块则刷新 write_merge = 1 :写入合并,提升写磁盘的性能 fast_remove = 1 :解除绑定时无需将脏块写入磁盘 Percona 页设置: innodb_page_size=4096 、 innodb_fast_checksum=1 刷新策略: innodb_adaptive_checkpoint=3 、  innodb_flush_neighbor_pages=0 IO 容量: innodb_io_capacity>10000 IO 线程: innodb_read_io_threads = 1 、 innodb_write_io_threads = 16
Our Solution(4) 监控 Fusion-IO ( fio-status ): Logical bytes written :逻辑写 Logical bytes read  :逻辑读 Physical bytes written :物理写 Physical bytes read :物理读 Flashcache ( dmsetup status ): read hit percent :读命中 write hit percent :写命中
Q&A E-Mail: PengLiXun@gmail.com

More Related Content

PPTX
MySQL新技术探索与实践
PPT
内部MySQL培训.3.基本原理
PPT
MySQL源码分析.02.Handler API
PDF
MySQL优化、新特性和新架构 彭立勋
PDF
对MySQL应用的一些总结
PPT
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
PPT
MySQL源码分析.01.代码结构与基本流程
PPT
Database.Cache&Buffer&Lock
MySQL新技术探索与实践
内部MySQL培训.3.基本原理
MySQL源码分析.02.Handler API
MySQL优化、新特性和新架构 彭立勋
对MySQL应用的一些总结
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.01.代码结构与基本流程
Database.Cache&Buffer&Lock

What's hot (20)

PPTX
MySQL aio
PPT
Mysql展示功能与源码对应
PDF
Mysql proxy cluster
PDF
MySQL快速入门与提高
PPT
MySQL基础技能与原理——高级应用
PDF
Mysql handlersocket
PDF
五款常用mysql slow log分析工具的比较
ODP
CKAN 技術介紹 (基礎篇)
PPT
MySQL基础技能与原理——基本原理
DOC
发布系统安装说明
PDF
Infiniflash benchmark
PDF
阿里集团MySQL特性(5.5介绍)
DOC
Apache+php+mysql在Linux下的安装与配置
DOC
MySQL 6.0 下的cluster + replicate - 20080220
PPT
高性能并发Web服务器实现核心内幕
PPT
Hadoop平台搭建
PPT
2 hibernate核心api
PDF
阿里集团MySQL并行复制特性
PDF
Couchdb Beijing Openparty
PDF
Install Oracle11g For Aix 5 L
MySQL aio
Mysql展示功能与源码对应
Mysql proxy cluster
MySQL快速入门与提高
MySQL基础技能与原理——高级应用
Mysql handlersocket
五款常用mysql slow log分析工具的比较
CKAN 技術介紹 (基礎篇)
MySQL基础技能与原理——基本原理
发布系统安装说明
Infiniflash benchmark
阿里集团MySQL特性(5.5介绍)
Apache+php+mysql在Linux下的安装与配置
MySQL 6.0 下的cluster + replicate - 20080220
高性能并发Web服务器实现核心内幕
Hadoop平台搭建
2 hibernate核心api
阿里集团MySQL并行复制特性
Couchdb Beijing Openparty
Install Oracle11g For Aix 5 L
Ad

Viewers also liked (20)

PPT
DB_Algorithm_and_Data_Structure_About_Sort
PDF
Time Machine
PPTX
对MySQL的一些改进想法和实现
PDF
MySQL多机房容灾设计(with Multi-Master)
PPT
内部MySQL培训.2.高级应用
PPT
内部MySQL培训.1.基础技能
PDF
Performance of fractal tree databases
PPTX
Alibaba patches in MariaDB
PDF
阿里云RDS for MySQL的若干优化
PDF
DoubleBinlog方案
PDF
NE Construction Newsletter July 2011 Debbie Flynn (2)
PPTX
Herosjourney
PPT
Branding Yourself For Success
PPT
Kelly C.Ruggles
PPT
Informed Sport Dec 08
PPT
E-mosaics: agile learning for the workplace in 2012
PDF
A Review Of Design Process For Low Energy Solar Homes
PPT
POSO - podsumowanie
PPT
หนังสือเล่มเล็ก
ODP
Why Open Source Software Matters
DB_Algorithm_and_Data_Structure_About_Sort
Time Machine
对MySQL的一些改进想法和实现
MySQL多机房容灾设计(with Multi-Master)
内部MySQL培训.2.高级应用
内部MySQL培训.1.基础技能
Performance of fractal tree databases
Alibaba patches in MariaDB
阿里云RDS for MySQL的若干优化
DoubleBinlog方案
NE Construction Newsletter July 2011 Debbie Flynn (2)
Herosjourney
Branding Yourself For Success
Kelly C.Ruggles
Informed Sport Dec 08
E-mosaics: agile learning for the workplace in 2012
A Review Of Design Process For Low Energy Solar Homes
POSO - podsumowanie
หนังสือเล่มเล็ก
Why Open Source Software Matters
Ad

Similar to MySQL新技术探索与实践 (20)

PDF
Mysql体系结构及原理(innodb)公开版
PDF
[嵌入式系統] 嵌入式系統進階
PDF
2011 06-12-lamp-mysql-顾春江
PDF
2011 06-12-lamp-mysql
PPT
淘宝商品库MySQL优化实践
PPT
PPT
Erlang游戏开发
PPT
百度分布式数据库 刘斌 Sacc2010
PDF
构建基于Lamp的网站架构
PDF
Osc scott linux下的数据库优化for_postgresql
PPT
百度分布式数据库平台
PPT
Altibase管理培训 安装篇
PPT
数据库与ssd的实践与探索-2011数据库技术大会
PDF
Lamp高性能设计
PPTX
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)
PPT
第11讲 管理Cisco互联网络
PPTX
OPOA in Action -- 使用MagixJS简化WebAPP开发
PDF
Tcfsh bootcamp day2
PPTX
Baidu LSP and DISQL for Log Analysis
PPT
MySQL调优
Mysql体系结构及原理(innodb)公开版
[嵌入式系統] 嵌入式系統進階
2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql
淘宝商品库MySQL优化实践
Erlang游戏开发
百度分布式数据库 刘斌 Sacc2010
构建基于Lamp的网站架构
Osc scott linux下的数据库优化for_postgresql
百度分布式数据库平台
Altibase管理培训 安装篇
数据库与ssd的实践与探索-2011数据库技术大会
Lamp高性能设计
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)
第11讲 管理Cisco互联网络
OPOA in Action -- 使用MagixJS简化WebAPP开发
Tcfsh bootcamp day2
Baidu LSP and DISQL for Log Analysis
MySQL调优

More from Lixun Peng (6)

PDF
Double Sync Replication
PDF
对简易几何机械化证明的进一步研究
PDF
A binary graphics recognition algorithm based on fitting function
DOC
一种基于拟合函数的图形识别算法
PDF
中文分词算法设计
PPT
DB_Algorithm_and_Data_Structure_About_BTree
Double Sync Replication
对简易几何机械化证明的进一步研究
A binary graphics recognition algorithm based on fitting function
一种基于拟合函数的图形识别算法
中文分词算法设计
DB_Algorithm_and_Data_Structure_About_BTree

MySQL新技术探索与实践

  • 1. MySQL 新技术探索与实践 彭立勋 WWW.PengLiXun.COM Alibaba DBA Team
  • 2. 新技术风起云涌 以 Percona/XtraDB 为代表的 MySQL 分支 ( MariaDB 、 Drizzle…… ) 以 HandlerSocket 为代表的新接口 ( Memcached Plugin…… ) 以 XFS/EXT4 为代表的高性能文件系统 ( Btrfs 、 ZFS…… ) 以 Flashcache 为代表的二级缓存架构 ( InnoDB Secondary Buffer Pool…… ) 以 Fusion-IO 为代表的 PCI-E SSD 以 Intel C Compiler 为代表的高性能编译器 ……
  • 3. Topics ICC XFS Percona HandlerSocket
  • 4. Why ICC 为何自己编译 MySQL ? 官方无静态编译的 Innodb Plugin 版本 可以加入第三方 Patch 或修改源码 可以将第三方库静态编译到可执行文件( TCMalloc ) 为何使用 ICC 编译? 原生 Intel SSE2 指令集,浮点运算效率高 内置 Intel Math Lib ,提升数学函数效率 内置 Intel Thread Lib ,提升多线程稳定性和效率
  • 5. ICC vs GCC(1) 硬件环境 CPU : Intel Xoen 5410 内存: 24G 硬盘: 10*15k SAS RAID10
  • 6. ICC vs GCC(2) 硬件环境 CPU : Intel Xoen 5520 内存: 24G 硬盘: 10*15k SAS RAID10 MySQL : 5.1.40 Enterprise
  • 7. Why XFS 为何不使用 EXT3 ? 对 SSD 设备不友好, SSD 是未来数据存储设备的趋势 删除文件速度慢,导致数据库 Hang 对大文件读写性能不佳 为何选择 XFS ? SGI 已经在其大型机上应用多年 (From 1994) ,稳定可靠 对 SSD 设备友好(延迟分配) 高并发下竞争少,性能好(分配组特性) 支持条带化分配,使得文件系统分配与 RAID 条带完全对齐,最大化吞吐量 对大文件操作友好(基于 Extent 的分配方式)
  • 8. Why NOT EXT4? EXT4 也是一款非常好的文件系统 性能与 XFS 接近,甚至好一些 并且可以从 EXT3 无缝升级 But ...... 我们没有运维 EXT4 的经验
  • 9. XFS Tips 分配组( Allocation Groups ) 延时分配( Delay Allocation ) 多线程 DirectIO 全 B+ Tree 管理空间
  • 10. EXT3 vs XFS(1) 硬件环境 CPU : Intel Xoen 5520 内存: 24G 硬盘: 10*15k SAS RAID10 MySQL : 5.1.40 Enterprise
  • 11. EXT3 vs XFS(2) 硬件环境 CPU : Intel Xoen 5520 内存: 24G 硬盘: 10*15k SAS RAID10 MySQL : 5.1.40 Enterprise
  • 12. Why Percona Percona 的优势 对 SSD 设备有专门的优化 对 Flashcache 有 SQL 层接口 允许 XtraDB 静态编译 支持多种页大小 提供额外的监控参数 有被生产环境考验过( SOHU ) Percona 存在的问题 引入第三方补丁较多,可能存在 Bug (可以接受)
  • 13. New Future(1) 文件格式 Compressed 结构: CPU 换 IO Dynamic 结构: ROW 中不存大字段前缀 IO 参数 IO 容量: innodb_io_capacity IO 线程数: innodb_read_io_threads( 预读 ) 、 innodb_write_io_threads( 赃页回写 ) 、 innodb_use_purge_thread( 清理 UNDO) 赃页刷新方式 innodb_adaptive_checkpoint (XtraDB) innodb_adaptive_flushing (InnoDB Plugin)
  • 14. New Future(2) 扩展性 增强多处理机性能( About 24 Cores ) 拆分 Buffer Pool Mutex ( buf_pool_mutex 、 LRU_list_mutex 、 flush_list_mutex 、 page_hash_latch 、 free_list_mutex 、 zip_free_mutex 、 zip_hash_mutex ) 功能 可变页大小( innodb_page_size ) 可控的 Insert Buffering 和 Adaptive Hash Index 可配置多回滚段( innodb_extra_rsegments ) 快速 Warn Up ( innodb_buffer_pool_shm_key 、 XTRA_LRU_DUMP/XTRA_LRU_RESTORE ) 快速创建索引和索引快速重命名
  • 15. New Future(3) 监控 扩展 information_schema INDEX_STATISTICS TABLE_STATISTICS USER_STATISTICS 扩展 InnoDB 统计 INNODB_TABLE_STATS INNODB_INDEX_STATS For Example 可以获取未使用过的索引 可以获取索引被用于访问的行数 可以获取当前锁定信息 可以获取用户连接统计信息 ……
  • 16. Percona Performance 每秒处理 50~75 万行读取 每秒处理 2.5K~5K Query 每秒网卡吞吐 400~750Mbps
  • 17. Why Handler Socket SQL 执行的 Oprofile samples % app name symbol name 259130 4.5199 mysqld MYSQLparse(void*) 196841 3.4334 mysqld my_pthread_fastmutex_lock 106439 1.8566 libc-2.5.so _int_malloc …… 63435 1.1065 mysqld JOIN::optimize() 55825 0.9737 vmlinux wakeup_stack_begin 55054 0.9603 mysqld MYSQLlex(void*, void*) 50833 0.8867 libpthread-2.5.so pthread_mutex_trylock 49602 0.8652 ha_innodb_plugin.so.0.0.0 row_search_for_mysql …… 46499 0.8111 libc-2.5.so malloc
  • 18. Why Handler Socket HandlerSocket 执行的 Oprofile samples % app name symbol name 984785 5.9118 bnx2 /bnx2 847486 5.0876 ha_innodb_plugin.so.0.0.0 ut_delay 545303 3.2735 ha_innodb_plugin.so.0.0.0 btr_search_guess_on_hash 317570 1.9064 ha_innodb_plugin.so.0.0.0 row_search_for_mysql …… 206057 1.2370 HandlerSocket.so dena::hstcpsvr_worker::run_one_ep() 183330 1.1006 ha_innodb_plugin.so.0.0.0 mutex_spin_wait 175738 1.0550 HandlerSocket.so dena::dbcontext:: cmd_find_internal(dena::dbcallback_i&, dena::prep_stmt const&, ha_rkey_function, dena::cmd_exec_args const&) …… 149611 0.8981 ha_innodb_plugin.so.0.0.0 row_sel_store_mysql_rec
  • 19. HS vs MC vs SQL 硬件环境 CPU : Intel Xoen 5520 内存: 24G 硬盘: 10*15k SAS RAID10 MySQL : 5.1.48
  • 21. Our Solution(2) RAID 卡 关闭预读:预读效果不佳,直接读取磁盘 关闭磁盘 Cache : RAID 卡缓存已经缓冲了写操作,磁盘 Cache 无电池 条带:默认 64K ,调整为 1M Linux IO 调度: /sys/block/sdb/queue/scheduler ,默认 cfq ,调整为 deadline 减少预读: /sys/block/sdb/queue/read_ahead_kb ,默认 128 ,调整为 16 增大队列: /sys/block/sdb/queue/nr_requests ,默认 128 ,调整为 512 NUMA 策略: numactl --interleave=all 或 --cpunodebind=0 --localalloc
  • 22. Our Solution(3) Flashcache Block Size=4K :与 SSD 设备页对齐 dirty_thresh_pct = 90 :一个 SET 内 90% 都是脏块则刷新 write_merge = 1 :写入合并,提升写磁盘的性能 fast_remove = 1 :解除绑定时无需将脏块写入磁盘 Percona 页设置: innodb_page_size=4096 、 innodb_fast_checksum=1 刷新策略: innodb_adaptive_checkpoint=3 、 innodb_flush_neighbor_pages=0 IO 容量: innodb_io_capacity>10000 IO 线程: innodb_read_io_threads = 1 、 innodb_write_io_threads = 16
  • 23. Our Solution(4) 监控 Fusion-IO ( fio-status ): Logical bytes written :逻辑写 Logical bytes read :逻辑读 Physical bytes written :物理写 Physical bytes read :物理读 Flashcache ( dmsetup status ): read hit percent :读命中 write hit percent :写命中

Editor's Notes

  • #6: #include <iostream> #include <cstdlib> #include <time.h> #include <math.h> #define MAXN 2000000000 using namespace std; // 计时器 class Timer { public : // 构造函数 Timer (); // 析构函数 ~Timer (); // 开始计时 void begin(); // 计时结束 void end(); // 获取时间 float get_time(); private : clock_t start, finish; float time; }; Timer::Timer () { start = 0; finish = 0; } Timer::~Timer () { start = 0; finish = 0; } void Timer::begin () { start = clock(); } void Timer::end () { finish = clock(); } float Timer::get_time() { time = (float)(finish-start)/CLOCKS_PER_SEC; return time; } float pi(int n) { float s=0; float a; for(int i=1;i<=n;++i) { if(i%2==0) { a = 1.0/(2*i-1); s -= a; } else { a = 1.0/(2*i-1); s += a; } } s *= 4; return s; }; float sqrt1 (int n) { float a = 0; for (int i=1; i<=n; ++i) { /*if (i%2 == 0) { a += 1/sqrt(i); } else { a -= 1/sqrt(i); }*/ a += 1/sqrt(i); } return a; } float sqrt2 (float x) { float xhalf = 0.5f*x; int i = *(int*)&x; // get bits for floating VALUE i = 0x5f375a86- (i>>1); // gives initial guess y0 x = *(float*)&i; // convert bits BACK to float x = x*(1.5f-xhalf*x*x); // Newton step, repeating increases accuracy return x; } float sqrt3 (int n) { float a = 0; for (int i=1; i<=n; ++i) { /*if (i%2 == 0) { a += sqrt2((float)i); } else { a -= sqrt2((float)i); }*/ a += sqrt2((float)i); } return a; } int main() { Timer timer; timer.begin (); float p = pi(MAXN); timer.end (); cout<<"1.PI Test(NULL):"<<timer.get_time()<<endl; timer.begin (); cout<<"\\n2.PI="<<pi(MAXN)<<endl; timer.end (); cout<<"2.PI Test:"<<timer.get_time()<<endl; timer.begin (); sqrt1(MAXN); timer.end (); cout<<"\\n3.system sqrt Test(NULL):"<<timer.get_time()<<endl; timer.begin (); cout<<"\\n4.sqrt1="<<sqrt1(MAXN)<<endl; timer.end (); cout<<"4.system sqrt Test:"<<timer.get_time()<<endl; timer.begin (); float s = sqrt3(MAXN); timer.end (); cout<<"\\n5.newton sqrt Test(NULL):"<<timer.get_time()<<endl; timer.begin (); cout<<"\\n6.sqrt2="<<sqrt3(MAXN)<<endl; timer.end (); cout<<"6.newton sqrt Test:"<<timer.get_time()<<endl; return 0; }
  • #7: GCC 编译参数: CC=gcc \\ CXX=gcc \\ CHOST="x86_64-pc-linux-gnu" \\ CFLAGS=" -O3 \\ -fomit-frame-pointer \\ -pipe \\ -march=nocona \\ -mfpmath=sse \\ -m128bit-long-double \\ -mmmx \\ -msse \\ -msse2 \\ -maccumulate-outgoing-args \\ -m64 \\ -ftree-loop-linear \\ -fprefetch-loop-arrays \\ -freg-struct-return \\ -fgcse-sm \\ -fgcse-las \\ -frename-registers \\ -fforce-addr \\ -fivopts \\ -ftree-vectorize \\ -ftracer \\ -frename-registers \\ -minline-all-stringops \\ -fno-exceptions \\ -fno-rtti \\ -fbranch-target-load-optimize2 \\ -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free " \\ CXXFLAGS="${CFLAGS}" \\ LDFLAGS=" -ltcmalloc_minimal -lstdc++ " \\ ./configure \\ --with-server-suffix=-alibaba-edition \\ --with-mysqld-user=mysql \\ --with-plugins=heap,innodb_plugin,myisam,partition \\ --with-charset=utf8 \\ --with-collation=utf8_general_ci \\ --with-extra-charsets=gbk,utf8,ascii \\ --with-big-tables \\ --with-fast-mutexes \\ --with-zlib-dir=bundled \\ --with-readline \\ --with-pthread \\ --enable-assembler \\ --enable-profiling \\ --enable-local-infile \\ --enable-thread-safe-client \\ --with-mysqld-ldflags=-all-static \\ --without-embedded-server \\ --without-query-cache \\ --without-geometry \\ --without-debug \\ --without-ndb-binlog \\ --without-ndb-debug ICC 参数: CC=icc \\ CXX=icpc \\ LD=xild \\ AR=xiar \\ CFLAGS="-O3 -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -unroll2 -ip -fp-model fast=1 -restrict -fno-exceptions -fno-rtti -no-prec-div -fno-implicit-templates -static-intel -static-libgcc -static -xSSE2 -axSSE2 " \\ CXXFLAGS="${CFLAGS}" \\ CPPFLAGS=" -I/usr/alibaba/icc/include " \\ LDFLAGS=" -L/usr/alibaba/icc/lib/intel64/ -lrt -ltcmalloc_minimal -lstdc++ " \\ ./configure \\ --with-server-suffix=-alibaba-edition \\ --with-mysqld-user=mysql \\ --with-plugins=heap,innodb_plugin,myisam,partition \\ --with-charset=utf8 \\ --with-collation=utf8_general_ci \\ --with-extra-charsets=gbk,utf8,ascii \\ --with-big-tables \\ --with-fast-mutexes \\ --with-zlib-dir=bundled \\ --with-readline \\ --with-pthread \\ --enable-assembler \\ --enable-profiling \\ --enable-local-infile \\ --enable-thread-safe-client \\ --with-mysqld-ldflags=-all-static \\ --without-embedded-server \\ --without-query-cache \\ --without-geometry \\ --without-debug \\ --without-ndb-binlog \\ --without-ndb-debug
  • #11: 格式化参数: mkfs.xfs -f -i size=512,attr=2 -l size=128m,lazy-count=1 -d su=64k,sw=5 -L data /dev/sdb1 mount 参数: /dev/sdb1 /data xfs defaults,noatime,nodiratime,noikeep,nobarrier,allocsize=8M,attr2,largeio,inode64,swalloc 0 0
  • #20: 测试场景为 1G 数据不断执行 SELECT 或 GET 操作同一条记录