谈谈MYSQL那点事系统优化:硬件、架构 系统优化:硬件、架构 服务优化 服务优化 应用优化 应用优化 MySQL MySQL 优化方式 优化方式 影响性能的因素 影响性能的因素 应用程序 应用程序 查询 查询 事务管理 事务管理 数据库设计 数据库设计 数据分布 数据分布 网络 网络 操作系统 操作系统 硬件 硬件 使用好的硬件,更快的硬盘、大内存、多核 使用好的硬件,更快的硬盘、大内存、多核 选项 缺省值 推荐值 说明 max_connections 100 1024 MySQL 服务器同时处理的数据库连接的最大 数量 query_cache_size 0 ( 不打开 ) 128M 查询缓存区的最大长度,按照当前需求,一 倍一倍增加,本选项比较重要 sort_buffer_size 512K 128M 每个线程的排序缓存大小,一般按照内存可 以设置为 2M 以上,推荐是 16M ,该选项对 16G ,最好本值超 1024M innodb_flush_log_at_trx _commit 1 0 0 代表日志只大约每秒写入日志文件并且日志文件 刷新到磁盘 ; 1 为执行完没执行一条 SQL 马上 commit; 2 代表日志写入日志文件在每次提交 后 , 但是日志文件只有大约每秒才会刷新到磁盘上 . 对速度影响比较大,同时也关系数据完整性 innodb_log_file_size0 码力 | 38 页 | 2.04 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人员工 手机号 设备 商品 商品 查询 / 操作 生活中无处不在的图 图分析技术分类 图查询 • 使用图数据库的查询语言进行点边搜索 图算法 • 中心性算法 • 社区算法 • 路径算法 • … 图深度学习 • 图嵌入 • 图卷积 • 图注意力网络 • 图自编码器 图查询及其应用场景 图查询 • 使用图数据库的查询语言进行点边的关联查询,可以快速完成传统数据库难以完成的 多度点边关 图技术全景图—— Graph Technology Landscape 2020 • 图数据库 • 图数据建模 • 图计算引擎 • 图数据集成 • 可视化分析 • 知识图谱解决方案 • 图查询语言 • 欺诈检测 • 网络安全分析 • 社交网络分析 • BI 工具 • 图分析工具集 • 图咨询服务 Source : Graph Aware 图数据库发展趋势 AtlasGraph Nothing 模式支 持存储计算分离 高性能 基于 Rust 开发的分布式存储引 擎及图计算引擎,精细的内存 管理设计,内置索引系统,支 持毫秒级的并发查询响应速度 易用 AQL(Atlas Graph Query Language) ,类 SQL 的图查询 语言,内置上百种分析函数, 面向分析师友好,拥抱标准, 基于 openCypher 向 ISO GQL 迈进 实时大图 支持万亿节点存储及流式计算0 码力 | 38 页 | 24.68 MB | 1 年前3
基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺是一个极简的时序数据处理平台。 采用关系型数据库模型 需要建库、建表, 为提升写入和查询效率,要求一个数据采集点一张表 为实现多表聚合,引入超级表概念 子表通过超级表创建,带有标签,通过标签实现多表 高效聚合 高效写入 支持标准 SQL 写入,支持批量写入 支持 Schemaless 写入 支持从 Kafaka, MQTT, OPC, FLOAT) TAGS ( `groupid` INT, `location` VARCHAR(24)) TDengine - 业务模式 开源版 企业版 云服务版 核心功能开源 • SQL 支持 • 无模式写入 • 缓存 • 流计算 • 数据订阅 • 集群、高可用 高可靠、线性扩展 + 专业技术服务 • 边云数据复制 • 跨云 / 异地数据复制 • 增量备份 • 多级存储0 码力 | 29 页 | 2.26 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 14 C++ 标准库系列课 - 你所不知道的 set 容器b.insert(3); • 等价于 • auto tmp = b.insert(3); • auto ok = tmp.first; • auto it = tmp.second; 在 set 中查询元素是否存在 • set 有一个 find 函数。只需给定一个参 数,他会寻找 set 中与之相等的元素。 • 如果找到,则返回指向找到元素的迭代器 。 • 如果找不到,则返回 end() find(2) begin() end() 1 2 4 find(2) begin() end() 1 2 4 find(2) begin() end() * * * 出错! 在 set 中查询元素是否存在 • 因此,可以用这个写法: • set.find(x) != set.end() • 来判断集合 set 中是否存在 元素 x 。 • 这是个固定的写法,虽然要 调用两个函数看起来好像挺 find(int const &val) const; • iterator end() const; 1 2 4 find(2) begin() end() find(8) 在 set 中查询元素是否存在 • 还有一种更直观的写法: • set.count(x) != 0 • count 返回的是一个 int 类型,表示 集合中相等元素的个数。 • 等等,不是说 set 具有去重的功能,不会0 码力 | 83 页 | 10.23 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串<< 和 hex 选项。 • 但是他的输出会保存到一个字符串里。 • 调用成员函数 .str() 就能取出这个字符串了。 • 之后这个字符串就可以用作其他用途,比如 printf 打印,或者用于查询数据库,都没问题。 • 这里比较无聊,最后还是直接输出到了 cout 。 stringstream 也可以取代 stoi • 刚刚展示了 stringstream 模仿 cout 的方法。 • stringstream string 类里定义了一个静态常量 npos ,其值为 (size_t)- 1 。 • 我们使用时,可以用 std::string::npos 代替看起来很不专业的 - 1 。 • 因此,要查询一个字符串是否包含某一字符,可以写: 1. s.find(c) != string::npos 2. s.find(c) != s.npos 3. s.find(c) != (size_t)-1 4 ohello”.find(“lo”) + 4 。 • 此外还有 find(“str”, pos, len) 和 find(“str”.substr(0, len), pos) 等价,用于要查询的字符串已经确定长度,或者要查询的字符串是 个切片( string_view )的情况。若不指定这个长度 len ,则默认 是 C 语言的 0 结尾字符串, find 还要去求 len = strlen(“str”)0 码力 | 162 页 | 40.20 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南.html find_package 命令用法举例 • find_package(OpenCV) • 查找名为 OpenCV 的包,找不到不报错,事后可以通过 ${OpenCV_FOUND} 查询是否找到。 • find_package(OpenCV QUIET) • 查找名为 OpenCV 的包,找不到不报错,也不打印任何信息。 • find_package(OpenCV REQUIRED) 查找名为 OpenCV 的包,找不到就报错,可具有 OpenCV::core 和 OpenCV::videoio 这两个 组件,没有这两组件不会报错,通过 ${OpenCV_core_FOUND} 查询是否找到 core 组件。 find_package 说是找“包”,到底是在找什么? • find_package(OpenCV) 实际上是在找一个名为 OpenCVConfig.cmake 的文件。 find_package 命令指定版本 • find_package(OpenCV REQUIRED) • 查找名为 OpenCV 的包,不限版本,事后可以通过 ${OpenCV_VERSION} 查询找到的版本。 • find_package(OpenCV 2.0.1 REQUIRED) • 查找版本在 2.0.1 以上的 OpenCV 包( version >= 2.0.1 )。 • find_package(OpenCV0 码力 | 56 页 | 6.87 MB | 1 年前3
CeresDB Rust 生产实践 任春韶Cancellation 目录 CeresDB – 历程 2018.02 2018.10 2019.02 ~ 2020.11 2021.9 自研存储引擎 1.0.0 版本发布 查询性能优化 Prometheus 协议支持 基于 InfluxDB 单机引擎研发 分布式方案 OpenTSDB 协议 内存时序数据库 存储计算分离架构 分级存储 解决时间线高基数问题 • 能高效处理好 APM 型时序数据 • 同时能高效处理好高基数时间线场景 提供原生分布式方案 • 大规模部署 • 提供高可用、高可靠的服务 • 支持水平扩容 • 支持高效的分布式查询 - Tokio Preemption - Future Cancellation Rust 生产实践 生产实践 – Tokio 为什么使用 Tokio ? 1. 业界使用最广泛,测试齐全。0 码力 | 22 页 | 6.95 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 13 C++ STL 容器全解之 vectorresize(2) 之后,数组的容量仍 然是 5 ,因此重新扩容到 5 是不需要重 新分配内存的,也就不会移动元素导致指 针失效。 vector 容器: capacity 函数查询实际的最大容量 • 可以用 capacity() 函数查询已经分配内存的大小,即最大容 量。 • 而 size() 返回的其实是已经存储了数据的数组长度。 • 可以发现当 resize 指定的新长度一个超过原来的最大容量时0 码力 | 90 页 | 4.93 MB | 1 年前3
GPU Resource Management On JDOS用户只需要简单选择机房和 镜像填写模型名即可完成 Serving 服务创建 自有模型 • 用户只需要填写模型地址即 可 GPU 监控 • 容器监控服务,自适 应 GPU 容器,可根据 容器 IP 查询记录 , 便 于用户查看服务状态 ,亦可作为 HPA 的数 据源 • 采集项 name,index,fan.speed,te mperature.gpu,pstate,po wer.draw,power0 码力 | 11 页 | 13.40 MB | 1 年前3
Rust分布式账务系统 - 胡宇事务层与账户层分 离 ● 独立水平扩展 ● CQRS ● Event Sourcing ● 针对读场景,写场 景分别优化 ● 稳定的底层 API ● 灵活的顶层 API ● 树状结构 ● 聚合查询 ● 正确性:内存安全,线程安全 ● 可靠性: Raft 共识算法 raft-rs ● 高性能:关键路径无锁单线程 顶层架构 ● Gateway 路由层 ○ 业务 API 到底层 API0 码力 | 27 页 | 12.60 MB | 1 年前3
共 17 条
- 1
- 2













