MySQL数据库优化SQL的三个方法
创始人
2024-07-01 02:10:45
0

以下的文章主要向大家描述的是MySQL数据库优化,SQL的实际操作步骤,我们讲述的是MySQL数据库优化,SQL的三步骤,以下就是这三步骤的具体操作的详细描述,望你浏览之后会对其有所收获。

MySQL数据库优化--SQL第一步:

1:磁盘寻道能力,以高速硬盘(7200转/秒),理论上每秒寻道7200次.这是没有办法改变的,优化的方法是----用多个硬盘,或者把数据分散存储.

2:硬盘的读写速度,这个速度非常的快,这个更容易解决--可以从多个硬盘上并行读写.

3:cpu.cpu处理内存中的数据,当有相对内存较小的表时,这是最常见的限制因素.

4:内存的限制.当cpu需要超出适合cpu缓存的数据时,缓存的带宽就成了内存的一个瓶颈---不过现在内存大的惊人,一般不会出现这个问题.

MySQL数据库优化--SQL第二步: (本人使用的是学校网站的linux平台(Linux ADVX.Mandrakesoft.com 2.4.3-19mdk ))

1:调节服务器参数

用shell>MySQL(和PHP搭配之最佳组合)d-help这个命令声厂一张所有MySQL(和PHP搭配之最佳组合)选项和可配置变量的表.输出以下信息:

possible variables for option--set-variable(-o) are:

back_log current value:5 //要求MySQL(和PHP搭配之最佳组合)能有的连接数量.back_log指出在MySQL(和PHP搭配之最佳组合)暂停接受连接的时间内有多少个连接请求可以被存在堆栈中

connect_timeout current value:5 //MySQL(和PHP搭配之最佳组合)服务器在用bad handshake(不好翻译)应答前等待一个连接的时间

delayed_insert_timeout current value:200 //一个insert delayed在终止前等待insert的时间

delayed_insert_limit current value:50 //insert delayed处理器将检查是否有任何select语句未执行,如果有,继续前执行这些语句

delayed_queue_size current value:1000 //为insert delayed分配多大的队

flush_time current value:0 //如果被设置为非0,那么每个flush_time 时间,所有表都被关闭

interactive_timeout current value:28800 //服务器在关上它之前在洋交互连接上等待的时间

join_buffer_size current value:131072 //用与全部连接的缓冲区大小

key_buffer_size current value:1048540 //用语索引块的缓冲区的大小,增加它可以更好的处理索引

lower_case_table_names current value:0 //

long_query_time current value:10 //如果一个查询所用时间大于此时间,slow_queried计数将增加

max_allowed_packet current value:1048576 //一个包的大小

max_connections current value:300 //允许同时连接的数量

max_connect_errors current value:10 //如果有多于该数量的中断连接,将阻止进一步的连接,可以用flush hosts来解决

max_delayed_threads current value:15 //可以启动的处理insert delayed的数量

max_heap_table_size current value:16777216 //

max_join_size current value:4294967295 //允许读取的连接的数量

max_sort_length current value:1024 //在排序blob或者text时使用的字节数量

max_tmp_tables current value:32 //一个连接同时打开的临时表的数量

max_write_lock_count current value:4294967295 //指定一个值(通常很小)来启动MySQL(和PHP搭配之最佳组合)d,使得在一定数量的write锁定之后出现read锁定

net_buffer_length current value:16384 //通信缓冲区的大小--在查询时被重置为该大小

query_buffer_size current value:0 //查询时缓冲区大小

record_buffer current value:131072 //每个顺序扫描的连接为其扫描的每张表分配的缓冲区的大小

sort_buffer current value:2097116 //每个进行排序的连接分配的缓冲区的大小

table_cache current value:64 //为所有连接打开的表的数量

thread_concurrency current value:10 //

tmp_table_size current value:1048576 //临时表的大小

thread_stack current value:131072 //每个线程的大小

wait_timeout current value:28800 //服务器在关闭它3之前的一个连接上等待的时间

根据自己的需要配置以上信息会对你帮助.

MySQL数据库优化--SQL第三:

1:如果你在一个数据库中创建大量的表,那么执行打开,关闭,创建(表)的操作就会很慢. 2:MySQL(和PHP搭配之最佳组合)使用内存

a: 关键字缓存区(key_buffer_size)由所有线程共享

b: 每个连接使用一些特定的线程空间.一个栈(默认为64k,变量thread_stack),一个连接缓冲区(变量net_buffer_length)和一个结果缓冲区(net_buffer_length).特定情况下,连接缓冲区和结果缓冲区被动态扩大到max_allowed_packet.

c:所有线程共享一个基存储器

d:没有内存影射

e:每个做顺序扫描的请求分配一个读缓冲区(record_buffer)

f:所有联结均有一遍完成并且大多数联结甚至可以不用一个临时表完成.最临时的表是基于内存的(heap)表

g:排序请求分配一个排序缓冲区和2个临时表

h:所有语法分析和计算都在一个本地存储器完成

i:每个索引文件只被打开一次,并且数据文件为每个并发运行的线程打开一次

j:对每个blob列的表,一个缓冲区动态的被扩大以便读入blob值

k:所有正在使用的表的表处理器被保存在一个缓冲器中并且作为一个fifo管理.

l:一个MySQL(和PHP搭配之最佳组合)admin flush-tables命令关闭所有不在使用的表并且在当前执行的线程结束时标记所有在使用的表准备关闭

3:MySQL(和PHP搭配之最佳组合)锁定表

MySQL(和PHP搭配之最佳组合)中所有锁定不会成为死锁. wirte锁定: MySQL(和PHP搭配之最佳组合)的锁定原理:a:如果表没有锁定,那么锁定;b否则,把锁定请求放入写锁定队列中

read锁定: MySQL(和PHP搭配之最佳组合)的锁定原理:a:如果表没有锁定,那么锁定;b否则,把锁定请求放入读锁定队列中

有时候会在一个表中进行很多的select,insert操作,可以在一个临时表中插入行并且偶尔用临时表的记录更新真正的表

max_tmp_tables current value:32 //一个连接同时打开的临时表的数量

max_write_lock_count current value:4294967295 //指定一个值(通常很小)来启动MySQL(和PHP搭配之最佳组合)d,使得在一定数量的write锁定之后出现read锁定

net_buffer_length current value:16384 //通信缓冲区的大小--在查询时被重置为该大小

query_buffer_size current value:0 //查询时缓冲区大小

record_buffer current value:131072 //每个顺序扫描的连接为其扫描的每张表分配的缓冲区的大小

sort_buffer current value:2097116 //每个进行排序的连接分配的缓冲区的大小

table_cache current value:64 //为所有连接打开的表的数量

thread_concurrency current value:10 //

tmp_table_size current value:1048576 //临时表的大小

thread_stack current value:131072 //每个线程的大小

wait_timeout current value:28800 //服务器在关闭它3之前的一个连接上等待的时间

根据自己的需要配置以上信息会对你帮助.

以上的相关内容就是对MySQL数据库优化--SQL的介绍,望你能有所收获。 

【编辑推荐】

  1. 安装在MySQL4.1的453h出现问题的解决
  2. MySQL5.0安装MySQL(和PHP搭配之最佳组合)
  3. MySQL AUTO_INCREMENT实际操作用法
  4. MySQL高效分页查询的实际操作步骤
  5. MySQL5 master slave安装配置全过程

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
P2P的自白|我不生产内容,我... 现在一提起P2P,人们就会联想到正在被有关部门“围剿”的互联网理财服务。×租宝事件使得劳...
范例解读VB.NET获取环境变... VB.NET编程语言的使用范围非常广泛,可以帮助开发人员处理各种程序中的需求,而且还能对移动设备进行...