当前位置: 首页 > news >正文

帮朋友免费做网站小程序端

帮朋友免费做网站,小程序端,装修公司怎么做免费网站,百度平台投诉人工电话背景#xff1a;MySQL经常会遇到Too many open files#xff0c;MySQL上的open_files_limit和OS层面上设置的open file limit有什么关系#xff1f;源码中也会看到不同的数据结构#xff0c;TABLE, TABLE_SHARE#xff0c;跟表是什么关系#xff1f;MySQL flush tables又…背景MySQL经常会遇到Too many open filesMySQL上的open_files_limit和OS层面上设置的open file limit有什么关系源码中也会看到不同的数据结构TABLE, TABLE_SHARE跟表是什么关系MySQL flush tables又做了些什么这几个东西放在一起就会比较迷惑下面进行梳理一下1 数据结构table:   MySQL为每一个查询sql中的表建一个TABLE对象table_share:  MySQL为每一张表建立一个table_share对象与frm文件对应handler:  对应于每个TABLE对象innodb引擎创建一个handlerdict_table_t:  innodb为每一个ibd表load一个数据字典对象简略图如下1. open table的过程测试sqlselect * from xpchild.pp函数调用栈open_and_lock_tablesopen_tablesopen_and_process_tableopen_table打开一个table并赋值给table_list-table下面进入核心的逻辑开始锁lock_open1.1 table_share:首先根据dbtable_name创建一个table_share.函数调用栈get_table_share_with_discover: 创建或者查找table_share对象。get_table_share如果全局cachetable_def_cache中存在就直接使用如果不存在就创建一个table_sharealloc_table_share: 如果不存在先分配一个share的对象。open_table_def: 打开frm文件。mysql_file_open: my_open打开inline_mysql_file_close: my_close关闭share-ref_count;要点MySQL server层维护了一个全局的table definition cache即table_def_cache所以一个table_share只会创建一次后续进行共享。初始化table_share的过程中调用文件系统打开frm文件初始化完成后关闭frm文件。share结构中ref_count来表示有多少个table关联1.2 打开tableopen_table_from_sharestep1: 初始化table中的变量包括file handler (get_new_handler(share-db_type()))step2: 添加各种索引字段结构step3: file-ha_openha_innobase::open 为innodb的table创建一个handler。要点1. 在open table的过程中innodb会创建一个handler并打开ibd文件初始化dict_table结构。释放锁lock_open1.3 close table:sql执行结束之前会调用close tableclose_open_tables(thd)table_def_unuse_table要点1.table_share维护了两个双向链表used_tablesfree_tables当close table的时候1.1 table-in_useNULL1.2 把table从used_tables移除1.3 加入到free_tables2.全局参数table_cache_size已经当前table_cache_count计数控制cache的置换策略2. 再次执行sql因为第一步已经完成了table_share的创建并且cache了table再次执行sql时open table的过程就比较简单2.1: get_table_share:从cache中直接获取table_share对象2.2open_table_from_share从s-free_tables中获取缓存的可以使用的table,然后增加ref计数。if (!share-free_tables.is_empty())table share-free_tables.front();share-ref_count;3 系统计数opened_tables系统在open_table_from_share中对新建的table进行thd-status_var.opened_tables计数。opened_shares: 系统在 open_table_def的函数中对于首次进行open的table_share进行thd-status_var.opened_shares计数注: 所以当系统的status:open_tables增长比较多的时候可以适当的增加table_cache_size用于缓存更多的table毕竟open table的开销还是不小的。4 status统计使用show status命令跟open有关的几个{Open_files, (char*) my_file_opened, SHOW_LONG_NOFLUSH}注释【全局变量】MySQL和innodb通过文件系统打开的文件的计数这里包括了所有的文件binlogrelayalertslow log等。{Open_table_definitions, (char*) show_table_definitions, SHOW_FUNC},注释【全局变量】server当前打开的table_share数量等于table_def_cache.records的数量{Open_tables, (char*) show_open_tables, SHOW_FUNC}注释【全局变量】 server当前打开的table数量server维护了一个全局变量table_cache_count{Opened_files, (char*) my_file_total_opened, SHOW_LONG_NOFLUSH}注释【全局变量】 启动以来打开过的文件的总数{Opened_tables, (char*) offsetof(STATUS_VAR, opened_tables), SHOW_LONG_STATUS}注释: 【线程变量】 在真正open_table_from_share的过程中累计计数{Opened_table_definitions, (char*) offsetof(STATUS_VAR, opened_shares), SHOW_LONG_STATUS}注释: 【线程变量】 在真正打开share的时候累计计数注 use test的过程在use test的过程中会轮询把test db下的所有表的table_share都创建一遍即open所有的frm文件并创建table_share对象最后close 所有的frm文件。为了方便调试写了一个进程监控的程序pidmon.py在gdb的时候可以看到mysqld进程打开的所有文件Too many open files:这里包括了server层的open frm和innodb层open ibd的时候当打开的文件超过limit限制就会报这个错误。但这个限制牵涉到两个参数一个是MySQL配置的open_files_limit一个是OS层配置的进程的open file limit下一篇flush tables究竟做了什么close了server层创建的所有的table_share和table。
http://www.yutouwan.com/news/340305/

相关文章:

  • 长沙建网站的公司一对一定制方案制作微信公众的网站开发
  • 优化门户网站建设网站建设平台硬件要求
  • 广州海珠区最新通告柳市网站优化
  • 成都大型网站建设公司购物网站建设模板
  • 云网站后台招聘网站页面设计图片
  • 在建立网站站点的过程中wordpress安装插件失败
  • 宁波制作网站哪个好光泽网站建设
  • 网站建设600元全包佛山市企业网站建设报价
  • 网站项目意义网站开发 业务流程图
  • 怎么给网站做支付接口昆明网站设计公司哪家好
  • 手机站电影如何制作一个自己的网站?
  • 网页主要由三部分组成宁波关键词优化企业网站建设
  • 企业微信平台株洲关键词seo优化服务商
  • 地产网站建设方案网页制作接单
  • 广州网站开发系统丽水开发区建设局网站廉租房
  • 外贸网站高端定做怎么制作软件程序
  • 成都建设网站公司简介教人做衣服得网站有哪些
  • 百度网站官网app定制排名
  • 域名打不开原来的网站wordpress两个站点
  • 网站开发技术汇总建宣传网站
  • 不要验证码的广告网站怎么创建网站充值和提现账号
  • 建设银行手机短信网站怎么开通百度网络营销中心
  • vs 2015可以做网站吗wordpress外链批量保存本地
  • 阜阳微商城网站建设电子商务网站建设的开发背景
  • 通过ip直连打开网站要怎么做网站建设设计文档模板
  • excel表如何做网站连接常熟沿江开发区人才网
  • 上传文件的网站wordpress写的网站
  • 人工智能网站应怎么做wordpress添加订阅教程
  • 服装企业北京网站建设ui培训设计怎么样
  • 建立网站 要怎么做网站公司是做什么的