加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL之SQL优化实战记录

发布时间:2018-11-02 08:50:27 所属栏目:MySql教程 来源:小祝特烦恼
导读:背景 本次SQL优化是针对javaweb中的表格查询做的。 部分网络架构图 业务简单说明 N个机台将业务数据发送至服务器,服务器程序将数据入库至MySQL数据库。服务器中的javaweb程序将数据展示到网页上供用户查看。 原数据库设计 windows单机主从分离 已分表分库

以下是我的配置示例。加了skip-name-resolve,快了4-5s。其他配置自行断定

  1.  [client] 
  2. port=3306 
  3. [mysql] 
  4. no-beep 
  5. default-character-set=utf8 
  6. [mysqld] 
  7. server-id=2 
  8. relay-log-index=slave-relay-bin.index 
  9. relay-log=slave-relay-bin  
  10. slave-skip-errors=all #跳过所有错误 
  11. skip-name-resolve 
  12.  
  13. port=3306 
  14. datadir="D:/mysql-slave/data" 
  15. character-set-server=utf8 
  16. default-storage-engine=INNODB 
  17. sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 
  18.  
  19. log-output=FILE 
  20. general-log=0 
  21. general_log_file="WINDOWS-8E8V2OD.log" 
  22. slow-query-log=1 
  23. slow_query_log_file="WINDOWS-8E8V2OD-slow.log" 
  24. long_query_time=10 
  25.  
  26. # Binary Logging. 
  27. # log-bin 
  28.  
  29. # Error Logging. 
  30. log-error="WINDOWS-8E8V2OD.err" 
  31.  
  32.  
  33. # 整个数据库最大连接(用户)数 
  34. max_connections=1000 
  35. # 每个客户端连接最大的错误允许数量 
  36. max_connect_errors=100 
  37. # 表描述符缓存大小,可减少文件打开/关闭次数 
  38. table_open_cache=2000 
  39. # 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB字段一起工作时相当必要)   
  40. # 每个连接独立的大小.大小动态增加 
  41. max_allowed_packet=64M 
  42. # 在排序发生时由每个线程分配 
  43. sort_buffer_size=8M 
  44. # 当全联合发生时,在每个线程中分配  
  45. join_buffer_size=8M 
  46. # cache中保留多少线程用于重用 
  47. thread_cache_size=128 
  48. # 此允许应用程序给予线程系统一个提示在同一时间给予渴望被运行的线程的数量. 
  49. thread_concurrency=64 
  50. # 查询缓存 
  51. query_cache_size=128M 
  52. # 只有小于此设定值的结果才会被缓冲   
  53. # 此设置用来保护查询缓冲,防止一个极大的结果集将其他所有的查询结果都覆盖 
  54. query_cache_limit=2M 
  55. # InnoDB使用一个缓冲池来保存索引和原始数据 
  56. # 这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少.   
  57. # 在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的80%   
  58. # 不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸.   
  59. innodb_buffer_pool_size=1G 
  60. # 用来同步IO操作的IO线程的数量 
  61. # 此值在Unix下被硬编码为4,但是在Windows磁盘I/O可能在一个大数值下表现的更好.  
  62. innodb_read_io_threads=16 
  63. innodb_write_io_threads=16 
  64. # 在InnoDb核心内的允许线程数量.   
  65. # 最优值依赖于应用程序,硬件以及操作系统的调度方式.   
  66. # 过高的值可能导致线程的互斥颠簸. 
  67. innodb_thread_concurrency=9 
  68.  
  69. # 0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘.   
  70. # 1 ,InnoDB会在每次提交后刷新(fsync)事务日志到磁盘上 
  71. # 2代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上 
  72. innodb_flush_log_at_trx_commit=2 
  73. # 用来缓冲日志数据的缓冲区的大小.   
  74. innodb_log_buffer_size=16M 
  75. # 在日志组中每个日志文件的大小.   
  76. innodb_log_file_size=48M 
  77. # 在日志组中的文件总数.  
  78. innodb_log_files_in_group=3 
  79. # 在被回滚前,一个InnoDB的事务应该等待一个锁被批准多久.   
  80. # InnoDB在其拥有的锁表中自动检测事务死锁并且回滚事务.   
  81. # 如果你使用 LOCK TABLES 指令, 或者在同样事务中使用除了InnoDB以外的其他事务安全的存储引擎   
  82. # 那么一个死锁可能发生而InnoDB无法注意到.   
  83. # 这种情况下这个timeout值对于解决这种问题就非常有帮助.  
  84. innodb_lock_wait_timeout=30 
  85. # 开启定时 
  86. event_scheduler=ON 

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读