数据库读写分析、优化.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库读写分析、优化

数据库读写分析、优化公仔问题1:列举用过的数据库功能?数据库解决的核心问题 读写 事务目标:尽可能读快,尽可能写快量化数据库读写测量读: select * from AA where id =1; 测量写: insert into AA values(2,’强哥’);硬件速度CPU 频率2.xG,多cpu内存 频率几百M网卡 百M,千M网卡/8 字节磁盘IO SAS 盘,db主流盘,100左右随机IO,150-200顺序IO SATA盘比SAS盘更慢 SSD盘 随机读IO 万次,随机写不行 fusion-io盘 随机读写IO都到几万次磁盘性能这么差?看看磁盘结构磁盘结构数据存放在扇区,一次IO总花费时间在8ms左右 (寻道时间+旋转延时)随机,顺序IODB存储结构简介(块,区,段,表空间)DB最小操作单元是块,一个随机IO对应一个块,一次顺序IO可以读取多个块(比如16或更多)DB表存储按主键排序全表读表定义:table users(id, userid,name)select * from users;速度非常慢,怎么办主键索引读select * from user where id =1;索引的两种结构cluster_index (类比字典的拼音查找)估算读的开销比如表记录1000万,索引字段包含2个int字段,则一条索引占用8字节,一个索引块大小比如8K,则索引块存放1000条索引记录。可以算出索引高度为3. 如果只select 2个索引字段,则只需要3次IO,就可以找到结果。如果select *则先要找到索引叶子节点,然后+ 1次磁盘IO 可以找到结果。二级索引读select * from user where user_id=2;回表 先查找主键索引key、然后根据主键索引查找valueOracle的索引存放的是键值和rowidSqlserver,mysql存放的是键值和主键值索引的两种结构Non_cluster_index(类比字典笔画查找)组合索引读select * from user where user_id=2 and name=‘强哥; 公仔问题2?在user_id建索引,user_id, name建索引区别组合索引不对导致cpu高的案例Hash读时间复杂度 O(1)内存随机读\磁盘不合适支持的数据库: msql的memory引擎 默认hash索引 sqlserver ,oracle的 hash join位图读 select count(*) from AA where marry=‘未婚’ and sex=‘女’;位图读索引的开销空间开销 独立的数据结构,分裂、合并等麻烦问题时间开销 修改延时等公仔问题3 除了索引还有其他办法?数据库读过程1.建立连接2.语法分析(检查语法、权限等)3.语法解析(软、硬解析)4.执行计划5.Buffer cache是否存在值,存在则返回数据6. 磁盘IO取数据读优化1.长连接,连接池 减少rtt(减少建立连接开销)2.省去sql解析、执行计划等开销 Handsocket\ Mysql5.6 memcached 访问3.参数化sql(减少解析sql时间)4.加大buffer容量,提升命中率innodb_buffer_pool_size show engine innodb status5.优化索引(减少读,合并读,批量读)读优化6. 减少记录大小(压缩)7.提升IO(硬件提升,ssd,fusion-io)8.分库分表(拆分IO到多台机器)9.oltp\olap分离(最大化IO资源给在线业务)10. 读分离,把读压力拆分到nosql(memcache,redis)11. 读写都分离(mongodb,hbase等) 数据库写DB表存储按主键排序—mysql,sqlserver磁盘文件 – append公仔问题4 主键在name上和自增id上区别数据库写导致并发低的根本原因:事务ACID Atomicity Consistency Isolation Durability数据库写事务一致性 两阶段: 预写操作log,再写数据操作log落地机制? 安全、效率平衡 log cache buffer\ 刷日志落地进程数据落地机制? 安全、效率平衡 data cache buffer \ 刷数据落地进程 数据库写redo log– 重做 解决掉电等故障undo log –回滚 解决撤销等问题数据库写事务隔离性数据库写并发修改策略: 1,排他锁。2. 读写锁。3. Copy on write(MVCC)早期的sqlserver,mysql 读写锁oracle mvcc 新版mysql都已升级到mvcc数据库写读写不相互阻塞, mvcc数据库写过程1.建立

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档