約 4,772,323 件
https://w.atwiki.jp/mediacoder/pages/38.html
0.8.33.5680 ----------- * Some UI tweaks for x265 * Updated some underlying components * Fixed portable package issue * x265 1.4+5 * MKV Toolnix 7.3.0 (with HEVC support) * MediaInfo 0.7.71 0.8.32.5660 ----------- * Fixed a bug in dual audio track processing * Added multiple-pass H.265 encoding * Updated x265 1.3+206 * Updated x264 r2479 0.8.31.5648 ----------- * Fixed H.264 CBR encoding issue * Fixed AC-3 audio tracks enumeration bug in previous build * QAAC 2.41 (with CoreAudioToolBox) * x265 1.2+507 * MP4Box 0.5.1-r5366 0.8.31.5642 ----------- * MKV subtitle stream(s) copying works now * x264 r2453 * x265 1.2+241 * FFmpeg 2.2.3 * MP4Box 0.5.1-r5321 * Oggenc2.87 (aoTuVb6.03) * tsMuxer changed back to SmartLabs version 1.10.6 0.8.30.5622 ----------- * x264 r2431 * x265 1.0.111 * MP4Box 0.5.1-r5261 * FFmpeg 2.2.2 * MediaInfo 0.7.69 * MKV Toolnix 6.9.1 * Added portable release (ready for PortableApps) 0.8.29.5608 ----------- * Fixed AVS file decoding breakage * FFmpeg 2.2.1 * MP4Box 0.5.1-r5210 * x265 0.9.68 (x64) 0.8.29.5602 ----------- * Fixed VP9 encoding breakage * Updated x264 r2409 * Updated x265 0.8.195 0.8.29.5600 ----------- * Revised x265 command line options * Updated x265 0.8.90 * Updated FFmpeg 2.1.4 * Updated QAAC 2.35 0.8.29.5599 ----------- * Fixed audio decoder blocking prompt in H.265 encoding with SVE enabled * Fixed x265 custom preset option not working bug * Changed x265 open-gop option to disabled by default to avoid seeking issue in MP4 container * Updated x265-0.7.232 (x64) 0.8.29.5597 ----------- * Fixed H.265/HEVC compatibility issue with Segmental Video Encoding (MP4 containier only) * Updated MP4Box 0.5.1-r5080 0.8.29.5595 ----------- * Added H.265/HEVC encoding * Added x265 0.7.183 * Added MKVMerge with HEVC patch 0.8.28.5588 ----------- * Updated QAAC 2.34 * Fixed duplicated audio stream bug in 2-pass mode * Fixed FFmpeg MPEG-TS multiplexing issue * Fixed command line bug of FFmpeg CBR encoding * Fixed TSMuxer dual audio stream multiplexing issue 0.8.28.5585 ----------- * Added tools64 directory for placing 64-bit tools * Updated QAAC 2.32 * Updated MP4Box 0.5.1 (x86) 0.8.28.5582 ----------- * Added VP9 encoding support * Removed some outdated video formats * Faster seeking with FFmpeg as video source * Fixed bitrate calculation inaccurate issue when specifying target file size * Optimized video preprocessing parameters for GPU encoding * Updated MKV Toolnix 6.6.0 * Updated MP4Box 0.5.1 (x64) * Updated Opus tools 0.1.8 * Updated vpxenc 1.3.0 0.8.27.5573 ----------- * Fixed the bug of keeping intermediate files option * Updated QAAC 2.26 * Updated MediaInfo 0.7.65 * Updated FFmpeg 2.1.1 * Updated x264 r2377 (komisar) * Fixed FFmpeg muxing raw H.264 bug 0.8.26.5560 ----------- * Fixed multi-pass encoding failure at 2nd pass beginning with very large files * Fixed auto-level video filter issue when video height undividable by 8 * Fixed H.264 stream copy issue * Updated x264 r2359 * Updated FFmpeg git-d1a1656 0.8.25.5556 ----------- * Added VOB as container option * Fixed audio copy or video copy issue with VOB/MPEG2 files * Fixed some encoding issues due to FFmpeg command line changes * Updated FFmpeg git-547d690 0.8.25.5553 ----------- * Fixed tsMuxer muxing issue with AAC audio * Fixed FFmpeg muxing issue with H.264 video * Fixed a rare audio/video desync issue * Fixed a rare MEncoder decoding blocking issue * Fixed audio normalization breakage in 5550 0.8.24.5550 ----------- * Re-implemented splitting function (by time or by segments) * Fixed ALAC encoding issue with QAAC * Updated QAAC 2.19 0.8.24.5542 ----------- * Using FFmpeg as default video source for MKV and TS files * Fixed FFmpeg video source A/V issue in some rare cases 0.8.24.5540 ----------- * Fixed FFmpeg video source blocking issue * Updated Intel GPU Encoder with Intel Media SDK 2013-R2 * Updated x264 r2348 * Updated FFmpeg git-38b701a * Updated MediaInfo 0.7.64 0.8.23.5530 ----------- * Updated FLAC 1.3 * Added FFVideoSource option for AviSynth * Fixed A/V sync issue of AviSynth source for some files * Fixed AviSynth decoding block issue * Fixed a bug which may cause interlacing identified as progressive 0.8.22.5522 ----------- * Improved calling sequence and controlling of decoders and encoders for better stability * Fixed a memory leak bug * Automatically turning off SVE for short video * Fixed decoding problem of some AVI and WMV files * Use same instance of FFmpeg for decoding video and audio streams * Fixed video source automatic fallback (trying different video sources) * Added audio source automatic fallback (trying different audio sources) 0.8.22.5510 ----------- * Fixed 1080i video green band issue * Fixed issues of converting video to image sequence and generating thumbnails * Minor tweak-up in SVE * Added the option for keeping intermediate files on error * No longer using the buggy MPlayer GUI for playback * Updated VP8 encoder (vpxenc) 1.1.0 * Updated MPlayer/MEncoder r36305 0.8.22.5508 ----------- * Fixed a bug in SVE which may cause freezing at the end of encoding * Fixed cropper UI freezing bug * Added converting video/image to C array code 0.8.22.5506 ----------- * SVE (Segmental Video Encoding) now compatible with multi-pass encoding * Fixed SVE issue with Xvid in MP4 container * Fixed some minor bugs of SVE * Fixed playback window not showing up 0.8.22.5500 ----------- * New Segmental Video Encoding (SVE) technology for parallelizing and accelerating video encoding * Added SVE tab for viewing the SVE algorithm statistics * Fixed distributive encoding breakage * Distributive mode supporting H.264 and VP8 encoding * Improved the sizing strategy of the Adaptive Transcoding Cache * Updated MediaCoder Agent (x64 version available) * Fixed quality option not adjustable in multi-pass CRF mode * Updated x264 r2334 0.8.21.5399 ----------- * Fixed a bug in image conversion * Fixed x264 bit-depth version mismatch in previous x64 builds * Included missing DLL for Opus encoder * Adjusted "Sound" tab layout * Fixed AviSynth audio source breakage * Fixed bitstream scanning blocking issue for some defective files * Updated Opus audio codec (libopus 1.1) * Replaced qtaacenc with qaac (another actively maintained CLI for Apple s AAC encoding engine) * Updated MediaInfo 0.7.63 0.8.21.5395 ----------- * Auto adjusting resolution to perform display aspect ratio conversion with cropping and expanding * Fixed decoding issue of 1920x1088 video (mostly 1080i MBAFF) * Added OpenCL device ID option (in advanced settings) * Fixed a CDDA issue * Fixed a Cuesheet file parsing bug * Updated x264 r2310 0.8.21.5392 ----------- * Added OpenCL detection and OpenCL option for x264 * Added raw image sequence output * Improved image decoding performance * Added "Auto" in denoiser option (automatically enabling denoiser) * Updated x264 r2309 (OpenCL enabled) * Updated MPlayer MEncoder svn-r36169 (built with FFmpeg 1.2.0) * Updated MKV Toolnix 6.2.0 * Added encoding frame display via serial port 0.8.20.5380 ----------- * Fixed UI bug of AviSynth option tab * Fixed green band issue when ripping BD with target resolution unset * Fixed audio not completely processed bug when end position set for DVD/BD ripping * Excluding UI related parameters in exported preset file * Updated MPlayer/Mencoder svn-r36092 * Updated FFmpeg 1.2 * Updated MediaInfo 0.7.62 0.8.19.5370 ----------- * Fixed out-of-sync issue for some RMVB video * Fixed QT AAC encoder VBR parameter bug * Fine tuned temporal denoiser parameters * Improved application icon for Windows 8 * Updated x264 (r2273) * Updated FFmpeg 1.1.3 * Updated MPUI (for playing output files) 0.8.18.5360 ----------- * Implementation of parallel video filters (automatic level, deblocking and deringing) * Updated FFmpeg (git-e9d443c) * Updated x264 (r2245) 0.8.18.5350 ----------- * Fixed processing issue when video frame width is undividable by 4 * Fixed some FFmpeg encoding issues * Updated MKV Toolnix 6.0.0 (header compression off by default) * Reworked task complete dialog with more details * Fixed green screen issue with GPU encoding in build 5350 0.8.18.5350 ----------- * High performance temporal denoising for GPU encoding * Fixed end position ignored issue for audio only encoding * Fixed FFmpeg audio source compatibility issue with Nero Encoder * Added volume filter option for FFmpeg audio source * Updated FFmpeg (git-5ce023b) 0.8.18.5348 ----------- * Fixed sampling rate check bug for HE-AAC encoding * Updated FFmpeg (git-7e5c5fa) * MEncoder rebuilt to restore support for decoding large files ( 2GB) * Fixed DVD/BD chapter time display in task list 0.8.18.5345 ----------- * Updated JM H.264 reference encoder to 18.4 * Fixed shrink-only scale option no effect when cropping is enabled * Fixed aspect ratio detection issue in DVD/BD ripping * Fixed new CUDA encoder problems (including VBR/CRF mode breakage) 0.8.18.5338 ----------- * CUDA encoder updated (built with CUDA 5.0, more options, better performance) 0.8.18.5335 ----------- * Fixed DVD and Bluray ripping breakage * Added copying creation and last-write time from input files * Added multi-pass CRF mode (first-pass in CRF, x264 only) * Fixed x264 warning on the last pass in multi-pass processing * Fixed parameters no effect bug for FFmpeg deshake and denoise filters 0.8.18.5330 ----------- * Optimized Intel MSDK encoder processing routines (fully working in NV12 colorspace, increased performance) * Added Direct3D 11 option for Intel MSDK encoder * Added ASS/SSA subtitle support * Added global subtitle file option on Subtitle tab * Fixed blocking issue when paring some file formats * Fixed A/V sync issue with some VFR (variable frame rate) video formats * Fixed low-framerate conversion issue with AviSynth * Improved video rendering efficiency of preview window and dashboard window * Added MPUI (a light-weight MPlayer GUI) for better experience of playing transcoded files * Updated MPlayer MEncoder (with ASS/SSA subtitle, Opus audio and Blu-ray supports) * Updated Intel MSDK encoder (built with Intel Media SDK 2012-R3) * Updated Opus audio encoder * Updated MKV Toolnix 5.9.0 0.8.17.5302 ----------- * Taskbar progress display now shows total task progress * Changed default video source of MKV files back to MEncoder * Fixed bug causing Nero AAC not working with TS Muxer * Fixed auto cropping/expanding issue with some resolutions 0.8.17.5300 ----------- * Added customizable dashboard window * Updated MP4Box 0.5.0 * Updated MKV Toolnix 5.8.0 * Updated MediaInfo 0.7.61 * Updated x264 r2230 * Updated 7z library to 9.22 0.8.16.5296 ----------- * Fixed Windows 7 task bar progress display issue * Updated preset settings for latest iPod Nano * Updated French translation * Updated FFmpeg (git-c995644) 0.8.16.5292 ----------- * Fixed FFmpeg not allowed to mux VP8 video bug * Fixed several minor UI bugs * Fixed duration not accurately identified bug for video longer than 60 minutes * Added toggable gadget preview window when application window minimized * Added Windows 7 taskbar progress display * Improved video preview window efficiency * Built with Visual Studio Express 2012 (x64 version only) 0.8.15.5280 ----------- * Fixed a bug causing settings cannot be reverted completely * Added transcoding statistics data visualization * Added de-shake filter options for FFmpeg * Updated MediaInfo 0.7.60 * Updated FFmpeg (git-070b0e1) 0.8.14.5275 ----------- * Added CRF mode when encoding H.264 with FFmpeg * Fixed MediaCoder Configuration Wizard breakage * Removed prompt for Premium in dual audio track transcoding * Updated French translation * Updated MediaInfo 0.7.59 * Updated FFmpeg (git-633b90c) 0.8.14.5270 ----------- * Added Opus audio format support * Fixed subtitle issue with some MKV files 0.8.13.5266 ----------- * Added playback speed transforming feature * Improved DirectShow capture efficiency in time-lapse mode * Updated x264 r2208 0.8.13.5262 ----------- * Xvid fourcc issue in AVI container fixed * Updated built-in HTTP daemon (miniweb) * Reverted MPlayer to previous revision for restoring Add Track breakage 0.8.13.5260 ----------- * Integrated FFmbc * Added MXF format * Supporting 24-bit and 32-bit audio * Audio stream selection now possible when FFmpeg used for decoding * Fixed several FFmpeg interfacing issues * Updated MPlayer r35003 0.8.12.5250 ----------- * Fixed multiple audio track identifying issue * Fixed picture rotating issue when scaling is enabled * Updated x264 r2200 * Updated MediaInfo 0.7.58 * Updated FFmpeg (20120608) 0.8.12.5248 ----------- * Sync with recent FFmpeg command line changes * Fixed up the broken Streaming Mode * Added RTMP streaming 0.8.12.5245 ----------- * Fixed a bug in output file name formatting * Fixed AC-3 muxing bug with TSMuxer * Update Xvidcore with a better optimized (and faster) build * Updated FFmpeg (Zeranoe build 20120519) 0.8.12.5242 ----------- * Fixed FFmpeg issue in x64 version * Added time-lapse video recording 0.8.12.5240 ----------- * Fixed MJPEG encoding breakage * Synced with some FFmpeg command line changes * Updated Google VP8 encoder to v1.0.0 * Updated x264 r2197 * Updated FFmpeg (Zeranoe build 2012-05-02) ******この間の情報はありません。発見した方は追加・更新を宜しくお願い致します。****** ***********また、ここから下は書き方が異なりますが、ご容赦ください。**************** ===0.7.5.4797=== 12/5/2010 * [update] MediaCoder build 4797 ** [fix] cue sheet file handling breakage ** [fix] audio stream selection no effect bug ** [fix] occasional crashing issue in 4795 * [update] MediaInfo 0.7.37 ===0.7.5.4795=== 12/1/2010 * [update] MediaCoder build 4795 ** [add] auto detection of subtitle file encoding ** [fix] H.264 raw stream encoding always reported error 19 ** [fix] AviSynth decoding + FFmpeg encoding issue * [update] x264 r1804 ===0.7.5.4792=== 11/24/2010 * [update] MediaCoder build 4792 ** [fix] exiting whiling encoding causing crashing issue ** [update] Add Capture Device dialog ** [update] encoding preview efficiency improved * [update] x264 r1790 ===0.7.5.4780=== 11/12/2010 * [update] MediaCoder build 4780 ** [fix] x264 reference frame option no effect when preset specified ** [fix] iPod/iPhone/iPad plugin HE-AAC option no effect bug ** [update] French translation ** [fix] FFmpeg bitrate issue, rounding bitrate for AC-3 and MP2 ** [fix] nero audio bitrate bug ** [add] I422, YUY2, RGB color space support ** [add] 10-bit x264 encoding ** [add] automatic video bitrate setting by specifying bitrate ratio or desired output file size ** [add] automatic audio bitrate setting by specifying bitrate ratio * [add] x264 10-bit version ===0.7.5.4762=== 10/29/2010 * [update] MediaCoder build 4762 ** [fix] HE-AAC in MPEG TS muxing issue ** [fix] some video stream copy issues ** [add] audio ReplayGain calculation ** [add] 2-pass audio normalization with calculated ReplayGain ** [fix] volume gain slider bar direction up side down issue ** [add] new DirectShow Capture audio source for capturing and encoding audio directly from webcam, microphone etc. ** [fix] FFmpeg "-flags" command line bug ** [fix] audio only transcoding of video files speed slow issue ** [fix] mplayer audio source not working in audio only transcoding ** [fix] device UI start button causing crashing issue ** [update] iPod/iPhone/iPad UI, HE-AAC option added * [update] FFmpeg r25456 * [update] MPlayer/MEncoder MT r32492 * [update] MediaInfo 0.7.36 * [update] x264 r1745 ===0.7.5.4740=== * [update] MediaCoder build 4740 ** [add] automatic resolution adjustment for keep aspect ratio without applying cropping or expanding ** [add] more controls on frame rate and resolution ** [fix] preview picture aspect ratio problem ** [fix] elementary stream files appear in outpot unexpectedly in 2-pass transcoding ** [fix] several minor fixups * [update] x264 r1713 * [update] tsMuxer ===0.7.5.4730=== 8/25/2010 * [update] MediaCoder build 4730 ** [add] XUL-based preset manager (experimental) ** [fix] transcoding dual audio track crashing issue ** [update] disabling LAME auto resampling by default which causes LAME output sampling rate different from the original * [update] MediaInfo reverted to 0.7.29 for better stability * [update] FFmpeg reverted to r22815 for better stability * [add] XULRunner 1.9.1.17 bundled ===0.7.5.4720=== 8/11/2010 * [update] MediaCoder build 4720 ** [add] software scaling and color space conversion for DirectShow capture input ** [add] demuxing MKV with MKVExtract * [update] CUDA H.264 encoder * [update] x264 r1688 * [update] FFmpeg r24254 * [update] MPlayer/MEncoder r31873 * [add] MKVExtract 4.2.0 ===0.7.5.4710=== 7/29/2010 * [update] MediaCoder build 4710 ** [add] DirectShow video capture device input (webcams etc.) ** [add] support for RV24/RGB24 and YUY2 colorspaces ** [fix] multiple audio stream detection issue * [update] x264 r1683 * [update] FFmpeg r24254 * [update] MKVMerge 4.2.0 ===0.7.5.4702=== 7/15/2010 * [update] MediaCoder build 4702 ** [update] sync command line syntax with latest x264 revision ** [fix] x264 interlacing encoding command line issue ** [fix] clicking on tray icon causing program exiting bug * [update] x264 r1675 ===0.7.5.4700=== 7/6/2010 * [update] MediaCoder build 4700 ** [add] parallelized transcoding ** [add] automatically adjusting encoder threads according to the number of parallelized jobs ** [add] switching between parallelized jobs for viewing statistics data and live preview video ** [add] start position can be specified for test phase ** [add] test phase result can be saved * [update] x264 r1666 * [update] MP4Box v0.4.6 dev 20100612 ===0.7.3.4685=== 6/28/2010 * [update] MediaCoder build 4685 ** [add] aware of Debugmode Frameserver signpost file and switching to AviSynth automatically ** [fix] MKV parsing and demuxing issue * [update] x264 r1659 * [update] FFmpeg r23816 * [update] FAAC updated to solve LC-AAC encoding breakage ===0.7.3.4677=== 6/4/2010 * [update] MediaCoder build 4677 ** [add] prompt of incomplete transcoding (error code 19) ** [add] using flvmdi utility to add metadata for flv files ** [update] separate FLV and F4V container ** [fix] parsing issue for broken files * [update] x264 r1629 * [update] MediaInfo reverted to 0.7.30 for better stability ===0.7.3.4672=== 5/26/2010 * [update] MediaCoder build 4672 ** [fix] encoding speed control causing timeout issue ** [fix] CUDA encoder crashing issue on x64 ** [add] very experimental support of VLC video source (mainly for webcam and streaming input) ** [add] encoding raw audio and video streams without muxing * [update] x264 r1602 * [update] MediaInfo 0.7.33 * [update] MPlayer/MEncoder r31170 * [update] FFmpeg r23107 ===0.7.3.4668=== 5/15/2010 * [update] MediaCoder build 4668 ** [add] encoding raw audio and video streams without muxing ** [add] encoding speed control ** [add] experimental realtime RTSP/RTP streaming out ** [fix] faulty picture scan type detection for some files ** [fix] processor affinity option bug ** [fix] some AviSynth script generation issues * [update] x264 r1583 * [update] MediaInfo 0.7.31 ===0.7.3.4640=== 4/26/2010 * [update] MediaCoder build 4640 ** [add] new x264 options for Blu-ray encoding ** [add] Bluray encoding preset file (experimental) ** [fix] CUDA H.264 compatibility issue with latest nVidia driver (197.13 or later) ** [fix] several UI issues ** [fix] output MP4 not streaming issue ** [update] x264 command line options ** [update] iPod UI plugin (iPad and Apple TV preset added) ** [update] French translation (Muriel Bonfils) * [update] x264 r1564 (supporting Blu-ray encoding) * [update] MediaInfo 0.7.30 * [update] MP4Box 0.4.6-dev (rev 5) ===0.7.3.4625=== 4/15/2010 * [update] MediaCoder build 4625 ** [fix] audio CD ripping breakage ** [fix] invalid flags option in FFmpeg command line ** [fix] A/V sync issue with some input formats (including Canon 5D-MKII produced video) ** [fix] AviSynth path bug ** [fix] FFmpeg interlaced encoding issue * [update] FFmpeg r22815 * [update] MediaInfo 0.7.30 * [update] x264 r1538 ===0.7.3.4612=== 3/9/2010 * [update] MediaCoder build 4612 ** [fix] UI messing up issue on window resizing ** [fix] MEncoder encoding issue ** [update] support for latest JM H.264/AVC encoder ** [fix] MEncoder loading issue when using CUDA encoder ** [fix] MKV subtitle not displayed issue when video source set to auto select ** [update] Traditional Chinese translation (Rambocnc Chou) * [update] x264 r1471 * [update] JM H.264/AVC encoder 17.0 * [update] MPlayer/MEncoder svn rev 30815 ===0.7.3.4606=== 2/26/2010 * [update] MediaCoder build 4606 ** [add] FFmpeg custom matrix option ** [add] option for disabling x264 psychovisual optimization ** [fix] AviSynth YADIF issue ** [fix] MEncoder loading issue in some occasions ** [fix] raw video encoding not usable bug ** [fix] OGG not muxed in MKV issue ** [fix] H.264 not muxed in F4V issue ** [fix] Xvid in AVI fourcc issue ** [fix] MKVMerge not working in x64 edition ** [update] French translation (Muriel Bonfils) ** [update] German translation (M. Möller) * [update] x264 r1442 ===0.7.3.4600=== 2/12/2010 * [update] MediaCoder build 4600 ** [add] prompt of audio format not supported by audio encoder ** [add] CPU utilization display in stats window ** [fix] using external audio file in video transcoding causing crash bug ** [fix] 3GPP container not usable bug ** [fix] WMA 7 encoded as WMA 8 bug ** [add] separate WMV into WMV 8 and WMV9 in video format list ** [add] M2TS container support ** [fix] Flash Video 2-pass encoding issue ** [fix] summary content mismatching with settings ** [add] support for more audio formats ** [fix] detecting MBAFF as interlaced mode ** [add] audio format option (formally only audio encoder option available) ** [add] automatic audio encoder selection according to audio format ** [fix] expert UI mode crashing issue * [update] x264 r1416 * [update] MediaInfo 0.7.27 * [update] MKVMerge 3.1.0 * [update] SDL 1.2.14 * [update] MPlayer/MEncoder r30521 ===0.7.2.4582=== 12/23/2009 * [update] MediaCoder build 4582 ** [update] all DAR/PAR related code rewritten ** [add] aspect ratio display in media information sidebar ** [fix] affinity option UI bug ** [fix] MPlayer video source causing MediaCoder crashing bug ** [fix] DVD transcoding breakage ** [fix] auto deinterlacing for DVD transcoding ** [update] retrieving more DVD stream properties ===0.7.2.4570=== 12/20/2009 * [update] MediaCoder build 4570 ** [fix] aspect ratio issue for MKV output ** [fix] muxing issues for several not commonly used container formats ** [update] audio video duration more precisely aligned when specifying duration ** [update] preparing architecture for upcoming segmental transcoding support * [update] MKVMerge 3.0.0 * [update] x264 r1376 ===0.7.2.4560=== 12/16/2009 * [update] MediaCoder build 4560 ** [add] easily control processor cores to use ** [add] processor affinity options for audio/video decoder and encoder ** [add] CBR rate mode (effective for x264 and FFmpeg only) ** [add] resolution value suggestion according to aspect ratio ** [fix] aspect ratio option float value input issue ** [fix] FFmpeg command line issue * [update] MediaInfo 0.7.25 * [update] x264 r1373 ===0.7.2.4536=== 11/13/2009 * [update] MediaCoder build 4536 ** [fix] effect and clipping window video not show issue under Vista/Win7 ** [fix] FFmpeg command line update for flags ** [add] codec path option on CT AAC+ option tab * [update] MediaInfo 0.7.24 * [update] x264 r1332 ===0.7.2.4530=== 10/28/2009 * [update] MediaCoder build 4530 ** [update] SAR calculation improved ** [update] SAR taken into consideration when doing auto cropping/expanding ** [fix] video preview window sometimes titled "no responding" under Win7 * [update] MediaInfo 0.7.23 * [update] x264 r1310 ===0.7.2.4528=== 10/24/2009 * [update] MediaCoder build 4528 ** [add] x264 sar calculation ** [fix] AviSynth frame rate issue ** [update] PSP plugin ** [update] German translation * [update] x264 r1301 ===0.7.2.4526=== * [update] MediaCoder build 4526 ** [fix] wavpack and flac decoder not seeking to specified start position issue ** [update] x264 threads decision ** [update] behavior of new version prompt ** [update] PSP plugin ** [fix] encoding frame preview window issue * [update] x264 r1292 ===0.7.2.4522=== * [update] MediaCoder build 4522 ** [add] new x264 options ** [fix] audio stream ID detection issue with some non-standard files ** [add] new implementation of VFW codecs encoding (experimental) ** [fix] x264 2-pass encoding issue ** [fix] video playback issue on Vista/Win7 ** [fix] blocking caused by non audio/video file in the queue ** [fix] formatted output file name bug ** [update] Finnish translation * [update] CUDA H.264 encoder CLI * [update] x264 r1271 * [fix] installer failed to unpack downloaded FFmpeg issue ===0.7.2.4512=== * [update] MediaCoder build 4512 ** [fix] AviSynth s Bob de-interlacing causing lines doubled issue ** [fix] auto finding CT AAC+ encoder in Winamp installation ** [fix] AviSynth and CUDA H.264 encoder co-working issue ** [fix] statistics not shown when input content s duration cannot be detected ===0.7.2.4510=== * [update] MediaCoder build 4510 ** [add] automatic de-interlacing ** [fix] audio only transcoding issue when AviSynth set as video source ** [fix] tags transferring issue ** [fix] AviSynth and FFmpeg not working together issue ** [fix] picture expanding issue with AviSynth ** [fix] playback of transcoded file not working normally * [update] FFmpeg reverted to r18695 * [update] LAME 3.98.2 * [update] OggEnc 2.85 (libvorbis 1.2.3) ===0.7.2.4506=== * [update] MediaCoder build 4506 ** [fix] media information retrievement issue with FLV and several other formats ** [add] support for AviSynth external plugins ** [add] subtitle support with AviSynth ** [fix] several AviSynth issues in previous build * [add] optional AviSynth installation with plugins ===0.7.2.4502=== * [update] MediaCoder build 4502 ** [fix] encoding video display window causing crash issue ** [fix] TS and MKV demuxing issue * [add] optional Avisynth installation * [update] MPlayer r29661 * [update] x264 r1251 ===0.7.2.4500=== * [update] MediaCoder build 4500 ** [fix] test phase failure bug when encoding to 1080p ** [update] [[AviSynth]] support vastly improved ** [update] automatically use [[AviSynth]] to decode if possible and fallback to other sources when not * [add] optional Avisynth installation * [update] x264 r1247 ===0.7.1.4496=== * [update] MediaCoder build 4496 ** [fix] duration detection issue which also causes trancoding progress not displayed ** [fix] cropping no effect issue when filtering video with encoder ** [fix] audio channel remapping crashing issue ** [fix] aspect ratio mess-up issue ** [fix] output slightly truncated bug in 4488 * [update] MPlayer r29583 (built with GUI) * [update] MPUI removed * [update] x264 r1239 ===0.7.1.4488=== * [update] MediaCoder build 4488 ** [add] x264 auto-variance AQ option ** [update] Subpixel motion estimation option ** [fix] crashing issue caused by MediaInfo ** [fix] grouping/join feature breakage * [update] MediaInfo 0.7.20 ===0.7.1.4485=== * [update] MediaCoder build 4485 ** [fix] occasional GUI frozen on start-up bug ** [update] CUDA H.264 tab options ** [fix] PSP H.264 compatibility issue * [update] CUDA H.264 encoder ** [add] encoder built-in de-interacing * [update] x264 r1195 ===0.7.1.4482=== * [update] MediaCoder build 4482 ** [add] very experimental CUDA-based video filters (scaling, deinterlacing and 3D-denoising) ** [add] video filtering applicator option ** [update] Media Transcoding Platform application UI improved ** [fix] Firefox 3.5 compatibility issue of XUL applications * [update] CUDA H.264 encoder ** [add] slice count option for tweaking up visual quality ** [update] maximum B-frames of 16 ===0.7.1.4475=== * [update] MediaCoder build 4475 ** [fix] multiple audio track format detection issue ** [fix] DVD ripping issue * [update] CUDA H.264 encoder ** [fix] bitrate control issue when using high bitrate * [update] MediaInfo 0.7.18 * [update] OggEnc 2.85 (libvorbis 1.2.2) * [update] [[Theora]] encoder 1.1 ===0.7.1.4470=== * [update] MediaCoder build 4470 ** [update] [[CUDA]] [[H.264]] encoding re-enabled ** [add] intelligent threading decision for x264 ** [fix] transcoding progress indicator issue ** [update] dual channel down-mixing algorithm * [update] [[CUDA]] [[H.264]] encoder (built with CUDA 2.2) * [fix] [[MEncoder]] not working properly issue ===0.7.1.4450=== * [update] MediaCoder build 4450 ** [fix] Xvid encoding performance issue on multi-core processors ** [update] improve overall transcoding performance for multi-core processors * [update] x264 r1165 * [update] MPlayer/MEncoder r29319 * [update] FFmpeg r19159 * [update] MediaInfo 0.7.17 * [add] xvidcore x64 build (in x64 update) ===0.7.1.4430=== * [update] MediaCoder build 4430 ** [add] [[CUDA]] accelerated H.264 encoder ** [add] [[CUDA]] accelerated frame scale filter ** [add] video buffer memory utilization control option ** [fix] aspect ratio issue ** [fix] misc bugfixes * [add] [[CUDA]] [[H.264]] encoder * [add] [[CUDA]] video filter (only down-scaling implemented at the moment) * [update] x264 r1163 * [update] MediaInfo 0.7.16 ===0.7.0.4399=== * [update] MediaCoder build 4399 ** [add] automatic encoder process priority setting ** [fix] MP4 aspect ratio issue ** [update] Russian translation * [update] [[SDL]] 1.2.13 * [update] [[MPlayer]]/[[MEncoder]] r29269 ===0.7.0.4395=== * [update] MediaCoder build 4395 ** [update] improve batch transcoding consistency ** [fix] [[MPlayer]] video source breakage ** [fix] [[MEncoder]] s sws parameter not functioning issue ** [update] Russian translation * [update] [[MPlayer]]/[[MEncoder]] r29269 ===0.7.0.4390=== * [update] MediaCoder build 4390 ** [fix] file descriptor resource leaking issue ** [fix] sub/idx subtitle issue ** [fix] files with multiple audio tracks joining issue * [update] libiconv 1.13 * [update] MKVMerge 2.7.0 (dll missing issue fixed) * [update] XULPlayer 0.6.0 * [update] MP4Box 0.4.6 dev * [update] MediaInfo 0.7.14 * [update] FFmpeg r18696 * [update] MPlayer/MEncoder r29240, large file ( 2GB) issue fixed * [update] x264 r1145 ===0.7.0.4385=== * [update] MediaCoder build 4385 ** [fix] sub/idx subtitle issue ** [fix] files with multiple audio tracks joining issue * [update] FFmpeg r29217 * [update] x264 r1143 ===0.7.0.4380=== * [update] MediaCoder build 4380 ** [add] extension builder (now complaint with and based on mcex.org) ** [fix] MKV parsing and decoding breakage ** [fix] Nero encoder bitrate setting display bug ** [fix] AAC audio bitrate information retrieving issue ** [update] disable console window close button ** [update] French translation ** [update] Portuguese (Brazilian) translation * [update] faad2 2.7 * [update] faac 1.28 * [update] x264 r1140 * [update] MPlayer/MEncoder r29188 (hard-coded [[SSE]] utilization) ===0.7.0.4370=== * [update] MediaCoder build 4370 ** [update] x264 default options ** [update] popup menu of Preview toolbar button ** [fix] several minor fixups * [update] x264 r1137 * [update] XULPlayer 0.5.2 ===0.7.0-rc3=== * [update] MediaCoder build 4360 ** [update] several UI issues * [update] MediaInfo 0.7.12 * [update] x264 r1134 * [update] MPlayer/MEncoder r29123 ===0.7.0-rc2=== * [update] MediaCoder build 4350 ** [update] several minor improvements ** [fix] benchmark mode issues ** [add] settings file location option in installer * [update] XviD 1.2.1 * [update] x264 r1129 * [update] XULPlayer 0.5.1.1 ===0.7.0-rc1=== * [update] MediaCoder build 4333 ** [update] new toolbar design ** [update] new layout of Video, Audio and Container tabs ** [add] new Sound tab for remapping audio channels and adjusting volume level ** [add] remuxer option for post-processing output file with a muxer tool ** [add] dual audio tracks transcoding * [update] x264 r1120 * [update] MPlayer/MEncoder r28806 * [update] MP4Creator 1.6.1e * [add] optional extra codecs download (installer)
https://w.atwiki.jp/shuei/pages/247.html
以下の内容は、Oracle9iの動作に即しています。 パフォーマンスチューニング チューニングの段階 アプリケーションの設計とプログラミング データベースの構成 新しいアプリケーションの導入 トラブルシューティングとチューニング 目標 応答時間の改善 データベース可用性の改善 データベースヒット率の改善 待機イベントの低減 一般的なチューニングの問題 不適切なセッション管理、カーソル管理、リレーショナル設計 考慮事項 設計、アプリケーション、メモリ、I/O、競合、OS 運用段階でのチューニング手順 ボトルネック特定 → 原因の確認 → 解決 → ボトルネックが解消されたかのチェック パフォーマンス/安全性のトレードオフ 制御ファイルの多重化 REDOログ・メンバーの多重化 チェックポイントの頻繁な発生 データ・ファイルのバックアップ 同時ユーザー/トランザクションの数 診断及びチューニング用のユーティリティ アラート・ファイル Background_dump_destにて配置ディレクトリを指定 バックグラウンド・トレース・ファイル Background_dump_destにて配置ディレクトリを指定 ユーザー・トレース・ファイル user_dump_destにて配置ディレクトリを指定 max_dump_file_sizeにて最大サイズを指定 統計スクリプト STATSPACK 及び utlbstat.sql,utlestat.sql(8.1.5以前) v$ビュー(v$sysstatなど)のスナップショットを作成して、スナップショット間の差分情報よりシステム解析レポートを自動生成する STATSPACKユーティリティの実行例 # インストール スナップショットの自動取得スクリプト PERFSTATユーザーにて実行 $ORACLE_HOME/rdbms/admin/spauto.sql待機時間など時間に関する統計を有効にする(約1%のoverhead) TIMED_STATISTICS=TRUE8.1.5以前ではutlbstat.sql,utlestat.sqlを利用する 待機イベントビュー v$system_event, v$event_name, v$session_event, v$session_wait ディクショナリ・ビューと特殊なビュー ANALYZE文やパッケージ・プロシージャDBMS_STATSによる実行結果を格納 DBA_TABLES, DBA_INDEXES, INDEX_STATS, INDEX_HISTOGRAM 動的パフォーマンスビュー 元表のx$表は直接の問い合わせは不可 システム全体の統計の収集 v$sysstat SGAグローバル統計 v$sgastat 待機イベントの統計 v$system_event, v$event_name セッション関連の統計の収集 v$statname 統計番号、名前、クラス v$sestat SID、統計番号、値 v$session SID、シリアル番号、ユーザー名、OSユーザー v$event_name イベント番号、イベント名、パラメーター v$session_event 起動してからのセッションごとの待機時間合計 SID、イベント名、待機合計、タイムアウト合計 v$session_wait 現在待機しているリソース、イベントの一覧 SID、順序番号、イベント、パラメーター1/2/3、待機時間 v$mystat 現セッションの統計 ラッチ LRUリストやSGAなどのリソースのロックシステム v$latchにて統計情報を確認する。 要求タイプ Willing-To-Waitモード:要求時にロックされている場合、一定時間後リトライ 統計項目 gets, misses, sleeps Immediateモード:要求時にロックされている場合、他の処理に進む 統計項目 immediate_gets, immediate_misses br SGAのチューニング すべてのSGA構造のサイズ確認 v$sgastat 動的なパラメータ SHARED_POOL_SIZE 共有プールサイズ DB_CACHE_SIZE データベース・バッファキャッシュサイズ DB_RECYCLE_CACHE_SIZE リサイクルDBBCサイズ DB_KEEP_CACHE_SIZE キープDBBCサイズ LOG_BUFFER REDOログバッファサイズ LARGE_POOL_SIZE ラージ・プールサイズ JAVA_POOL_SIZE JAVAプールサイズ 静的なパラメータ SGA_MAX_SIZE SGA最大サイズ 共有プールのチューニング shared_pool_sizeにてサイズを指定 shared_pool_sizeを大きくしすぎると、管理のオーバーヘッドでパフォーマンスが落ちることがある ライブラリ・キャッシュのチューニング 十分な領域を割り当てて、文が廃棄されるのを防止 select namespace,gethitratio,GETS,PINS,RELOADS from v$librarycache; sum(reloads)/sum(pins) 1% がOLTPでの目安 ・gethitratio 90% も目安となる ・すべての実行計画の詳細な統計:v$sqlarea ・共有プールにキャッシュされているSQL一覧:v$sqltext キャッシュされているオブジェクト一覧:v$db_object_cache 汎用コード、バインド変数などを利用して、実行計画を共有 再解析の原因となる共有SQL領域の無効を防止(一時的にパフォーマンス悪化) ・列の追加・変更・削除 ・表、ビュー、順序、シノニムの変更 ・Analyzeの実行 ・ストアド・プロシージャの再コンパイル (8未満)断片化の防止 ・予約領域の割り当て ・ラージオブジェクトの固定 ・大きな無名PL/SQLを使用しない ・共有サーバー構成ではラージプールを使用する サイズ指定 ストアド・オブジェクト(パッケージ、ビューなど)で必要なサイズを定義 select sum(sharable_mem) from v$db_object_cache where type in( PACKAGE , PACKAGEBODY , FUNCTION , PROCEDURE ); SQL文で使用されるメモリ量を定義 select sum(sharable_mem) from v$sqlarea where executions 5; 断片化、データの分散に備えて、大量のメモリーが必要になったときの領域を確保 ・共有プールの予約領域shared_pool_reserved_size を定義 − shared_pool_sizeの10%が目安( shared_pool_sizeの50%の制限) − v$shared_pool_reservedを確認してサイズを調整する (ただし9iでは正しい結果を得られない) 頻繁に使用するオブジェクトをメモリ上に固定 ・固定されていないPL/SQLオブジェクトを検索 select name,type,EXECUTIONS from v$db_object_cache where sharable_mem 10000 and type in( PACKAGE , PACKAGEBODY , FUNCTION , PROCEDURE ) and kept= NO ; dbms_shared_poolパッケージの作成 ・@$ORACLE_HOME/rdbms/admin/dbmspool.sql ライブラリ・キャッシュにパッケージを固定 EXECUTE dbms_shared_pool.keep( object_name , object_type ); ・object_type=P パッケージ、ファンクション、プロシージャ(デフォルト) T タイプ Q 順序 R トリガー 固定解除 EXECUTE dbms_shared_pool.unkeep( object_name ); 大きな無名PL/SQLの排除 無名PL/SQLブロックを検索 SELECT sql_text,address,hash_value FROM v$sqlarea where command_type=47 and LENGTH(sql_text) 500; ・無名PL/SQLブロックはパッケージファンクションをコールする小さな無名PL/SQLに変換するか、固定する exec dbms_shared_pool.keep( address,hash_value , A ); その他の初期化パラメータ OPEN_CURSOR:ユーザーのプロセスに割り当てられたプライベートSQL領域を参照する カーソルの数を定義 CURSOR_SPACE_FOR_TIME TRUEの場合、高速化のためオブジェクトを参照する カーソルがクローズするまで共有SQL領域から破棄されないので、 Reloadsが0でない限り設定しない。 SESSION_CACHED_CURSORS セッションの範囲内で、クローズされたカーソルをキャッシュする 数を設定する。解析フェーズをスキップすることが出来る。 デフォルトは0。 Oracle9iでの新機能 Oracle9iでは実行計画を、SQL文が破棄されるまで保持する キャッシュされた実行計画:V$SQL_PLAN v$sqlには対応する実行計画に基づくハッシュ値 plan_hash_value列が追加 データ・ディクショナリ・キャッシュのチューニング キャッシュミスを防止 v$rowcacheのsum(getmisses)/sum(gets) 15%が目安 ・shared_pool_sizeの値にて間接的にサイズを指定 ・ローカル管理にすれば、dc_free_extentsとdc_used_extentsのリクエスト数が少なくなる 共有サーバー接続下のUGA 共有サーバー接続ではUGAが共有プールに含まれる (代わりにUGAのサイズは小さくなる) 接続で使用されるUGA領域 select sum(value) || bytes "Totalsessionmemory" from v$mystatm,v$statnamet where m.statistic# = t.statistic# and name = sessionugamemory ; 共有サーバーの全ユーザーによって使用されるUGA領域 select sum(value) || bytes "Totalsessionmemory" from v$sesstate,v$statnamet where e.statistic# = t.statistic# and name= sessionugamemory ; すべてのユーザーによって使用される最大UGA領域 select sum(value) || bytes "Totalmaxmemory" from v$sesstate,v$statnamet where e.statistic# = t.statistic# and name= sessionugamemorymax ; ラージ・プールの初期化パラメータ LARGE_POOL_SIZE:サイズを指定 現状の確認 select * from v$sgastat where pool = largepool ; ラージ・プールの利点 I/Oサーバー・プロセス:DBWR_IO_SLAVES バックアップ及びリストア操作 共有サーバのセッション・メモリーを割り当て パラレル実行 ・PARALLEL_AUTOMATIC_TUNING=TRUEを設定することでパラレル実行バッファが割り当てられる ・FALSEの時は共有プールに割り当てられる 割り当てに失敗した際に、各コンポーネントがラージプールを要求する設定になっていた場合に発生する事象 ・ログのアーカイブに失敗し、エラーを戻す ・RMANがアラートファイルにエラーを書き、I/Oスレーブを使用しない ・共有サーバー接続で、エラーORA-4031が発生する Javaプールの初期化パラメータ JAVA_POOL_SIZE:サイズ指定 JAVA_SOFT_SESSIONSPACE_LIMIT:ユーザーのセッション中にJavaのメモリ使用量が このサイズを超えるとアラートファイルに警告が書き込まれる JAVA_MAX_SESSIONSPACE_SIZE:ユーザーのセッション中にJavaのメモリ使用量が このサイズを超えそうになるとメモリ不足で終了する。ORA-29554 Oracle9iJVMのメモリ使用 共有プール:ロードされるクラスごとに約8KB 共有プール、またはラージプール:サイズの大きいJARファイルのロードに約50MB Javaプール:すべてのセッション固有Javaコード及びデータ用に使用 中程度のJavaアプリケーションに約50MB 現状の確認 select * from v$sgastat where pool = javapool ; データベース・バッファ・キャッシュのチューニング 初期化パラメータ DB_BLOCK_SIZE:標準ブロックサイズ Oracle9i以降のパラメーター。動的にサイズ変更可 DB_CACHE_SIZE:DEFAULTバッファプールのサイズをバイト単位で指定 DB_KEEP_CACHE_SIZE:KEEPバッファプールのサイズをバイト単位で指定 DB_RECYCLE_CACHE_SIZE:RECYCLEバッファプールのサイズをバイト単位で指定 Oracle8i以前 または下位互換用。9iパラメータとの同時利用不可 DB_BLOCK_BUFFERS:バッファプールのサイズをDB_BLOCK_SIZEで指定 BUFFER_POOL_KEEP:KEEPバッファ件数とLRUラッチ数 BUFFER_POOL_RECYCLE:RECYCLEバッファ件数とLRUラッチ数 DB_BLOCK_LRU_LATCHES:ラッチ総数の指定 データベース・バッファ・キャッシュの管理 キャッシュ内データブロックの状態 空きバッファ:ディスク上とメモリー内に同じイメージがあるデータブロック 使用済みバッファ:メモリ内にディスク上と異なるイメージのあるデータブロック ディスクに書き込まれないと再利用できない 確保済みバッファ:現在アクセス中のデータブロック サーバープロセスによる書き込み 1.まずハッシュ関数によりDBBC内に目的のデータがないことが確認される (見つけた場合は該当ブロックをLRUリストのMRU側へ移動して、読み込み。 該当ブロックが変更されている場合は、ロールバック・セグメントの情報を 元に以前のイメージを再構築する) 2.LRUリストをLRU側から検索して、空きバッファを検索 3.途中見つけた使用済みバッファは使用済みリストへ移動 4.使用済みリストのサイズが閾値を越えた場合は、DBWnへ書き込みを指示 検索閾値の範囲内で空きバッファがない場合にもDBWnへ書き込みを指示 5.空きバッファを見つけたら、そのブロックにデータを上書きし、 ブロックをLRU側からMRU側へ移動する DBWnによるデータファイルの書き込みタイミング 1.使用済みリストのサイズの閾値超過 使用済みリストのデータブロックをデータファイルへ書き出す 2.検索閾値の超過 LRUリストの使用済みバッファを直接データファイルへ書き出す 3.タイムアウト(3秒ごと) LRUリストから使用済みバッファを使用済みリストへ移動した後に 使用済みリストのバッファをデータファイルへ書き出す 4.チェックポイント(CKPT→LGWR→DBWn) LRUリストから使用済みバッファを使用済みリストへコピーした後に 使用済みリストのバッファをデータファイルへ書き出す 5.表領域がTEMPORARY OFFLINEまたはBEGIN BACKUP時 LRUリストから使用済みバッファを使用済みリストへコピーした後に 使用済みリストのバッファをデータファイルへ書き出す 6.オブジェクトの削除 LRUリストから使用済みバッファを使用済みリストへコピーした後に 使用済みリストのバッファをデータファイルへ書き出す 7.OracleのAbort以外の停止時 動的SGA機能 インスタンスを停止させずにSGAのメモリ量を変更可能 ・ALTERSYSTEMSETdb_cache_size=8M; グラニュル単位で変更(指定値がグラニュルの倍数でない場合は切り上げ) SGAの合計サイズが128MB以下の場合:4MB SGAの合計サイズが128MBより大きい場合:16MB SGA_MAX_SIZEを超えて変更することは出来ない。ORA-00384 バッファ・キャッシュ・アドバイザ キャッシュサイズを変更した際の動作予測のための統計値を収集 チューニング 目標:ヒット率。OLTPの場合90%以上が目安 ・診断基準 キャッシュヒット率(V$SYSSTAT,STATSPACK) 計算式: 1-( physical reads-physical reads direct - physical reads direct(lob)) / session logical reads キャッシュ・アドバイザ機能 V$BH:キャッシュされているデータブロックを表示 V$BUFFER_POOL:各バッファ・プールの割り当てと変更前のサイズを確認 V$BUFFER_POOL_STATISTICS:個々のプールの情報を診断 チューニングテクニック バッファ・キャッシュのサイズ増加 ヒット率90%未満でメモリに余裕がある場合、 前回の増加で効果があった場合などに検討する DSSではサイズを増やしてもパフォーマンスの向上は望めない場合がある 複数のバッファ・プールを使用 KEEPバッファ:再利用される可能性のあるオブジェクトの保持に利用 RECYCLEバッファ:再利用される可能性がほとんどない データブロックの排除に利用 DEFAULTバッファ:常に存在する 8iの場合の複数バッファ・プールの指定 DB_BLOCK_BUFFERS=20000 #DEFAULTバッファのラッチ数は6-3-2=1 DB_BLOCK_LRU_LATCHES=6#LRUラッチ1つにつき最低50バッファ必要 BUFFER_POOL_KEEP=(BUFFERS 14000,LRU_LATCHES 3) BUFFER_POOL_RECYCLE=(BUFFERS 14000,LRU_LATCHES 2) キャッシュ先の指定 ALTER TABLE table_name STORAGE (BUFFER_POOL KEEP); KEEPバッファ・プールのガイドライン サイズ見積もり:指定したオブジェクトのほぼ全体のサイズ DEFAULTバッファプールサイズの10%未満 ANALYZE TABLE table_name estimate statistics; SELECT table_name,blocks FROM dba_tables WHERE table_name = TABLE_NAME ; RECYCLEバッファ・プールのガイドライン サイズ見積もり:アクティブなデータブロックのみ保持 (データベースに大きな負荷がかかっている状態において) @?/rdbms/admin/catparr.sql SELECT owner#,name,count(*) blocks from v$cache GROUPBY owner#,name; 検索したオブジェクトのうち、RECYCLEバッファで使用するオブジェクトのブロック数を4で割ってサイズを取得する。 複数バッファプールヒット率の確認 select name, 1-(physical_reads/(db_block_gets+consistent_gets)) "HIT RATIO" from v$buffer_pool_statistics where db_block_gets + consistent_gets 0; 表のキャッシュ ・全表走査時でもブロックをLRUリストのMRU側にキャッシュする CACHE句を使用して表を作成、変更 問い合わせ時にCACHEヒント句を使用 ・多数のユーザーに使用される小さな参照表に使用すると効果がある 待機イベント free buffer inspected:空きバッファを探すためにスキップされたバッファの数。 値が高いが増えている場合は、バッファキャッシュサイズを増やすことを検討する~ select name,value from v$sysstat where name = freebufferinspected ; buffer busy waits:プロセスがDBBCが使用可能になるまで待機 free buffer waits:サーバプロセスが空きバッファを見つけられないか、 使用済みリストが満杯の場合に発生 この2つの頻繁な発生は、DBWnのチューニングが必要な場合がある select event,total_waits from v$system_event where event in( free buffer waits , buffer busy waits ); 空きリスト競合 オブジェクトへの挿入処理時に、複数プロセスによるアクセス競合が発生する 競合の診断 select class,count,time from v$waitstat where class = segmentheader ;~ select event,total_waits for mv$system_event where event= bufferbusywaits ;~ 競合の軽減 1.オブジェクトのFREELISTSを増やす FREELISTSの数の確認 select s.segment_name,s.segment_type,s.freelists,w.wait_time,w.seconds_in_wait,w.state from dba_segmentss,v$session_waitw where w.event = eventbusywaits and w.p1=s.header_file and w.p2=s.header_block; ALTER TABLEコマンドにて空きリストを増やす 2.オブジェクトを自動管理表領域に移動する (ただしver9.0.1ではブロックの使用効率が悪くなるので推奨しない) 自動管理表領域の作成 create tablespace bit_seg_ts~ ...~ extentmanagement local~ segmentspacemanagement auto; REDOログ・バッファのチューニング REDOログ・エントリ REDOログ・エントリにはINSERT,UPDATE,DELETE,CREATE,ALTER,DROPの各操作を再実行するために必要な情報を格納 REDOログ・バッファのサイズ指定 初期パラメータ:LOG_BUFFER 値を増やすと、REDOログファイルへのI/Oが減少する COMMITを頻繁に使用すると、バッファの使用量が少なくてすむが、REDOログ・ファイルへのI/Oが増加する LOG_BUFFERの最小サイズは64K、デフォルト値は512K、3MB以上にしても効果は上がらない? REDOログバッファの問題の診断 CPUは高速だが、ディスクの速度が比較的遅いマシンの場合、LGWRがREDOログ・バッファの一部をREDOログファイルに書き込んでいる間に、新しいエントリが残りのすべてのREDOログバッファを使いきってしまい待機してしまう場合がある ビューによる確認 <ログスイッチが発生しなかったためのバッファ内での領域待ち> 目標:待機時間0 select sid, event, seconds_in_wait, state from v$session_wait where event = logbufferspace ; <サーバー・プロセスがバッファ内の空き領域が空くのを待機しているかの確認> v$sysstatの"redobufferallocationretries"統計を確認。 目標:REDOログエントリー数の1%未満に押さえること select name,value from v$sysstat where name in ( redo buffer allocation retries , redo entries ); REDOログバッファのチューニング log buffer space待機イベントが発生している場合 redo buffer allocation retriesが発生している場合 ・Redoログ・バッファが小さい場合はサイズを増やす ・Redoログ・ファイルを高速なディスク(ストライプ・ディスク)に移動する LGWRがバッファを使用可能にするタイミングが遅い REDOログ・ファイル上でディスクI/O競合が発生している場合 ・対策:専用のディスクにREDOログファイルをのせかえる ログスイッチの待機イベントlogfile switch completionの発生回数が多い場合 select event,total_waits,time_waited,average_wait from v$system_event where event like logfile switch completion% ;~ ・対策:REODログ・ファイルのサイズを大きくします チェックポイントが完了しないうちにログファイルを循環した場合 − アラートファイルに「CHECKPOINT NOT COMPLETED」というメッセージがないか確認 − V$SYSTEM_EVENTビューで確認 select event,total_waits,time_waited,average_wait from v$system_event where event = logfile switch (checkpoint incomplete) ;~ ・対策:LOG_CHECK_POINT_INTERVALとLOG_CHECKPOINT_TIMEOUTに適切な値を設定。REDOログ・グループのサイズと数を調整する ARCnのアーカイブ・ログ・ファイルへの書込遅延 V$SYSTEM_EVENTビューで確認 select event,total_waits,time_waited,average_wait from v$system_event where event = logfile switch (archiving needed) ;~ 対策:アーカイブ先のディスクがあることを確認し、REDOログ・グループを追加 ・ARCnプロセスの現在数が不十分であれば、LGWRが自動的にARCnプロセスを起動するので、大きな負荷が予測されるときには最大数 LOG_ARCHIVE_MAX_PROCESSESを調整する REDO操作の低減 大量のREDOログ・エントリ発生時に記録しないようにするには、 ・NOARCHIVELOGモードにてダイレクト・パス・ロードの時 ・ARCHIVELOGモードのダイレクト・パス・ロードで、ロードする表がNOLOGGINGオプションを設定している時 ・SQL*Loaderの制御ファイルにUNRECORVERABLE句を設定したとき ・ダイレクト・ロード・インサートでNOLOGGINGモードを使用したとき ・CREATE TABLE ... AS SELECT, CREATE INDEX, ALTER INDEX ... REBUILDはNOLOGGING属性に設定可能 データベース・ファイルの構成とI/Oの診断 基本的なルール ディスクI/Oを最小限化 ・ディスク負荷をディスク・デバイスとコントローラーに分散 − データ・ファイルとREDOログファイルを別々のディスクに格納 − 表データのストライピング OS機能によってストライピングを実施する際には、ストライプのサイズをDB_FILE_MULTIBLOCK_READ_COUNT×DB_BLOCK_SIZEの倍数にすると効果的 パラレル問い合わせによる全表操作がある場合、表領域データ・ファイルを別デバイスに分散することでも効果を発揮する − OracleServerに無関係なディスクI/Oの低減 − ローデバイスの使用を検討 ・可能な場合はローカル管理表領域を利用 表領域の分割 以下の要素はなるべく別の表領域に作成する ・データ・ディクショナリ・オブジェクト ・ロールバック・セグメント及びUNDOセグメント ・一時セグメント ・表、索引 ・非常に大きいオブジェクト I/O統計に関する診断ユーティリティ v$filestat,STATSPACK:各データ・ファイルのI/O回数、時間の統計を確認できる select phyrds, phywrts, d.name from v$datafiled, v$filestatf where d.file# = f.file# order by d.name; 全表走査のチューニング 全表走査の実行回数概要の調査 select name, value from v$sysstat where name like %tablescan% ;~ (tablescanのlongtablesとshorttablesが全表走査に関連する情報) NAMEVALUE -------------------------------------------------------------------------- tablescans(shorttables) 496 tablescans(longtables) 42 ←大部分は索引のない表の走査 tablescans(rowidranges) 0 tablescans(cachepartitions) 0 tablescans(directread) 0 tablescanrowsgotten 290545 tablescanblocksgotten 18532 チューニング:DB_BLOCK_READ_COUNT初期化パラメーター(1回のI/O処理で読み込むデータブロックの最大数)を調整してI/Oコールの回数を減らす。ただしOSによる上限あり 動的パラメーターなので、セッションごとに設定可能。 全表走査の進行状況確認 select sid, serial#, opname, to_char(start_time, HH24 MI SS ) STARTTIME, (sofar / totalwork)*100PERCENTAGE from v$session_longops; REDOログファイル 状態の確認には以下のビューを確認 ・v$logfile・v$log・v$log_history アーカイブ・ログ・ファイル ・REDOとアーカイブは別々のディスクに配置 ・アーカイブ・ログ・ファイルの確認 v$archive_log ・Oracle9iからはアーカイブプロセスを10個まで起動できる(不足時にLGWRが自動的に起動) v$archive_processesにて状況を確認(DBWR_IO_SLAVEが1以上の時、ARCnプロセス数は自動的に4になる) ・アーカイブ速度の調整パラメーター LOG_ARCHIVE_MAX_PROCESSES:ARCnの最初に起動する数を設定 LOG_ARCHVE_DEST_n:アーカイブファイル作成先を複数指定できる チェックポイント ・チェックポイントの頻度を上げることで生じる項目 − インスタンスリカバリの短縮 − スループットの低下 − DBWnとCKPTによるI/Oの増加 ・多くのサイトでは30分ごとの頻度に設定 ・頻度の診断 − アラートファイルにて "Checkpoint not complete; unable to allocate file"などの警告が発生しないようにする −V$SYSSTATにてbackgroundcheckpointsstarted/completedの値が1以上だとチェックポイントがログスイッチ間で完了していない −LOG_CHECKPOINTS_TO_ALERT=TRUEを設定することで、アラートファイルにチェックポイントの開始終了を記録できる −DBWncheckpointswriterequests統計は、チェックポイントの発生回数をカウント ・FASTSTARTチェックポイント −Oracle9iEEではFAST_START_MTTR_TARGETを設定して、MTTR時間によるチェックポイント頻度を設定可能 過去のインスタンス障害時の結果をもとに、以下の初期化パラメータを自動調整 LOG_CHECKPOINT_INTERVAL,LOG_CHECKPOINT_TIMEOUT~ −v$instance_recoveryにてリカバリ時間の見積もりなど確認可能 複数I/Oスレーブ・プロセス ・テープデバイスへの非同期I/Oが不可能なOSにて使用する(可能な場合は推奨しない) ・プロセスの命名規則はora_innn_SID ・DISK_ASYNCH_IO、TAPE_ASYNC_IOにてオン、オフを設定 複数DBWnプロセス ・DB_WRITER_PROCESSESにて設定 ・v$system_eventにてfree_buffer_waitsの値が大きいと判明したときにDBWnのプロセス数を増やすことを検討 select total_waits from v$system_event where event = free buffer waits ; データ・ブロックの効率的な使用 動的エクステント拡張 ・拡張時にディクショナリ・テーブルへのアクセスが頻繁に行われるため、パフォーマンスが低下する ・以上のデメリットを解消するには −ローカル管理表領域にて自動セグメント管理を利用 (表領域内のビットマップにてデータブロック利用状況を管理) create tablespace user_data_1 datafile /oracle9i/oradata/db1/lm_1.dbf size 100m extentmanagement local uniform size 2m; −セグメントサイズの設定を適切に設定 −定期的に拡張されそうなセグメントを診断する <空き領域が10%未満の表セグメントを表示> select owner, ltable_name, blocks, empty_blocks from dba_tables where empty_blocks / (blocks + empty_blocks) .1;~ <エクステントの手動割り当て> alter table hr.employees allocate extent; 大きなエクステント ・メリット −動的拡張が起こりにくい −パフォーマンスが若干向上 特にマルチブロックリードを効率的に行うために、エクステントサイズをDB_FILE_MULTIBLOCK_READ_COUN×5の倍数に設定 −1回のI/O操作でエクステント・マップ全体の読込 ・デメリット −空き領域が有効に利用できない −未使用領域が生じやすい データブロックのサイズ ・小さなブロックサイズのメリット・デメリット OLTPのような表へのランダムアクセスが多く発生する場合に適している ・メリット データブロックの競合減少 データ量の少ない行、もしくはランダムアクセスを行う表に最適 −デメリット 比較的ヘッダ部分が大きい データ・ブロックあたりの行数が少ない リーフ・ブロックの読込数が増える可能性あり ・大きいブロックサイズのメリット・デメリット DSSのような大量データへの順次アクセスが多く発生する場合に適している −メリット ヘッダ部分が比較的小さい 順次アクセス、及びサイズの大きい行に最適 索引読込のパフォーマンスが向上 −デメリット データブロックの競合が増大 データベース・バッファ・キャッシュで、より多くのメモリ領域を使用 ・標準・非標準ブロックサイズの指定 DB_BLOCK_SIZE:標準ブロックサイズ 非標準ブロックサイズの指定:CREATE TABLESPACE の BLOCKSIZEオプションにて指定 2,4,8,16,32KBのうちで選択する DB_nK_CACHE_SIZE:非標準ブロックサイズ用のキャッシュサイズ指定 PCTFREE/PCTUSEDのガイドライン ・PCTFREE(Default10) 挿入の平均的な行サイズ(INS)から、更新によって増加する 平均的なデータ量(UPD)にて算出。更新がなければ0に設定する PCTFREE = 100 * UPD / (UPD + INS)~ ・PCTUSED(Default40) 行が頻繁に削除される場合に設定 PCTUSED = 100 - PCTFREE - 100 * (UPD + INS) / BlockSize 行移行と行連鎖 ・行移行 UPDATEによってブロックに収まりきらなくなった行を、次のブロックへのポインタだけ残して空きのあるブロックに移行する ・行連鎖 一つのブロックにて収まりきらない行を、複数のブロックに納める ・行移行・行連鎖の検出 <ANALYZEコマンドによる方法> ANALYZE TABLE sales.order_hist compute statitics;~ select num_rows, chain_cnt from dba_tables where table_name = ORDER_HIST ;~ <STATSPACKによる方法> Instace Activity Stats for DBセクションの table fetch continued row統計 ・移行している行の解消 −エクスポート・インポート ALTER TABLE ... MOVEコマンドによる再構築−移行行の再挿入 @?/rdbms/admin/utlchain.sql accept table_name prompt analyze table table_name list chainedrows; create table temp as select * from table_name where rowid in (select head_rowid from chained_rows); delete from table_name where rowid in (select head_rowid from chainedrows); insert into table_name select * from temp; drop table temp; 最高水位標(HighWaterMark) ・利用済みブロックの最高水位標をセグメント・ヘッダ・ブロックに記録 ・作成時に、セグメントの先頭に設定される ・行挿入時に5ブロック単位で増分される ・Truncate文でリセットされるが、DELETE文ではリセットされない ・最高水位標より下に利用されていないブロックがあると、パフォーマンスが低下する場合がある。 ・最高水位標の位置の確認 <ANALYZEによる方法> ANALYZE TABLE hr.employees COMPUTE STATISTICS;~ SELECT num_rows, blocks, empty_blocks, empty, avgspace, chain_cnt, avg_row_len FROM dba_tables WHERE owner = HR AND table_name = EMPLOYEES ;~ BLOCKS/EMPTY_BLOCKS:最高水位標より下/上にあるブロック数 AVG_SPACE:最高水位標以下にあるデータ・ブロック内の平均空きバイト数 <DBMS_SPACEパッケージによる方法(統計情報が更新されない)> ...省略 ... エクステントの解除 ・エクスポート・インポートの実施 ・ALTER TABLE ... MOVEによる表の再構築 ・ALTER TABLE ... DEALLOCATE UNUSEDで最高水位標より後のエクステントの解除 索引の再構築 ・索引ブロックではエントリーはキー順に並べられるため、変更処理の多いテーブルの索引は定期的な再構築が必要となる ・変更が多い標の索引がパフォーマンス上問題となりうる ・完全に空になった索引ブロックのみ空きリストに登録される ・索引領域の診断 <無効になった索引エントリの割合を確認> analyze index emp_name_ix validate structure;~ select name,(del_lf_rows_len / lf_rows_len) * 100wastage from index_stats;~ LF_ROWS_LEN:リーフ・ブロックにある削除されたエントリに数 ・索引の再構築 再構築 ALTER INDEX ... REBUILD(索引を再作成する) オプション:ONLINE PARALLEL / NOPARALLEL RECOVERABLE / UNRECOVERABLE LOGGING/NOLOGGING 結合 ALTER INDEX ... COALESCE (同一ブランチ内のリーフブロックを結合する。低コスト) ・未使用索引の検出 #索引の使用状況の監視を開始 br; alter index hr.emp_name_ix monitoring usage;~ #索引の使用状況の監視を終了 br; alter index hr.emp_name_ix monitoring usage;~ #索引の使用状況を検索 br; select index_name,used from v$object_usage; ソート領域のチューニング ソート処理を必要とする操作 ・CREATE INDEX ・SELECT .... ORDER BY ・SELECT DISTINCT ・SELECT .... GROUP BY ・SELECT ... CONNECT BY ・SELECT ... CONNECT BY ROLLUP ・ソート・マージ結合 ・ANALYZEコマンド ソートプロセス メモリソート:ソート領域内にてソート用件が収まる場合 ディスクソート:ソート領域内にてソート用件が収まらず、一時セグメントを利用する場合、データはソートランと呼ばれる小さい断片に分割されて、一部をソート領域にてソート、他を中間結果として一時セグメントに納める ソート領域と初期化パラメータ ・専用サーバ構成の場合はPGA、共有サーバ構成の場合は共有プールに確保 ・SORT_AREA_SIZE:サイズ指定(セッション単位で動的に編集可能。4MB以上にしてもパフォーマンスはあがらない) ・SORT_AREA_RETAINED_SIZE:ソートが完了し、フェッチが終了していない時点で縮小できるソート領域サイズ (Oracle9iからの自動パラメータ) ・PGA_AGGREGATE_TARGET:すべてのサーバ・プロセス使用できるメモリの上限値 ・WORKAREA_SIZE_POLICY:AUTOにすると、PGA管理を自動化 MANUALでは、8i以前のパラメータを使用して管理する ソート処理に必要な領域 ・実行計画には、複数のソートを含めることが可能 ・単一サーバープロセスに必要なソート領域 アクティブなソート用にSORT_AREA_SIZE(バイト)の領域 + 結合ソート用に最低一つのSORT_AREA_RETAINED_SIZEの領域 ・パラレル・問い合わせに必要なソート領域 SORT_AREA_SIZE*2*並列度 SORT_AREA_RETAINED_SIZE*並列度*2以上 ソート処理のチューニング ソート処理をなるべく回避する ・索引作成時にNOSORTを使用 ・検索時にUNIONの代わりにUNIONALLを使用 ・表結合に索引アクセスを使用すれば、ソート・マージ結合の代わりにネスト・ループ結合を選択する ・ORDER BY句で参照される列に索引を作成 + NOT NULL ・ANALYZE ... FOR COLUMNS を使用して分析 ・サイズの大きいオブジェクトの ANALYZE には、 COMPUTE ではなく ESTIMATE を使用 ソートがメモリ内で行われるようにして、スワッピング/ページングを低減 一時領域を適切に割り当てて、領域割り当てコールを低減 ソート処理の診断とガイドライン v$sysstat:sorts(disk) 一時セグメントへのI/Oが必要なソート数 sorts(memory) メモリー内で完全に実行されたソート数 sorts(rows)ソート処理の対象となった行数 メモリー・ソートに対するディスク・ソートの比率は、5%未満が目安 超える場合はsort_area_sizeを増やす 一時領域 ・1インスタンスに1一時領域 ・ソート処理時にセグメントがつくられ、終了時に削除される ・SGA内のソート・エクステント・プール(SEP)にて管理される 一時表領域の診断 ・各一時セグメントに関する情報 select tablespace_name, current-users, total_extents from v$sort_segment;~ CURRENT_USERS アクティブユーザーの数 TOTAL_EXTENTS エクステントの総数 USED_EXTENTS 現在ソートに割り当てられているエクステント EXTENT_HITS 未使用エクステントがプール内に見つかった回数 MAX_USED_BLOCKS 使用済みデータブロックの最大数 MAX_SORT_BLOCKS 個々のソートで使用されたデータ・ブロックの最大数 ・ユーザーが必要とするソート領域の定義と、アクティブなディスクソートに関する情報の取得 select username, tablespace, contents, extents, blocks from v$sort_usage;~ ・一時表領域は複数のディスクにストライピングされることが望まれる ・一時ファイルに関する情報の取得 v$tempfile と dba_temp_files ロールバック・セグメントのチューニング ロールバック・セグメントの概要 ・トランザクションのロールバック ・トランザクションのリカバリ ・読みとり一貫性 ロールバック・セグメントのアクティビティ トランザクションはロールバック・セグメントの各エクステントに循環的にレコードを書き込む ロールバック・セグメントへの書込のためには、ロールバックセグメント自体がDBBCにキャッシュされている必要がある ロールバック・セグメントのヘッダー部分に、書き込まれたトランザクションの情報を書き込む ヘッダー部分は頻繁に更新されるため、ロールバック・セグメントの数が少ないとパフォーマンスが低下し、エラーが発生する場合もある 自動UNDO管理ではロールバック・セグメントの数もある程度自動的に管理される現在のエクステントが満杯になって次のエクステントに移る際、次のエクステントがアクティブ・エクステント(書き込んだトランザクションがまだコミットされていない状態)であった場合、新規エクステントを追加して書き込む エクステントの拡張によりパフォーマンスが低下するため、セグメントの動的拡張は出来る限り避ける ロールバック・セグメントの作成/オンライン ・作成 create rollbacksegment rbs01 tablespace rbs storage ( initial 100k next 100k minextens 20 maxextents 100 optimal 2000k);~ ・オンライン alter rollbacksegment rbs01 online; トランザクションのタイプ 読みとり専用:set transaction read only; 設定以降の読みとり一貫性が保証されるが、DMLは発行できない 直列可能: set transaction isolation level serializable; 設定以降の読みとり一貫性が保証されるが、設定以降に他のトランザクションによって変更された行に対して変更しようとするとORA-8117にて中止される 上記二つのトランザクションではロールバック・セグメントは長い間保持されている必要があり、大きめのロールバックセグメントを設定しておく必要がある チューニング目標 ロールバック・セグメントへのアクセス待機をさせない ロールバック・セグメントの拡張を出来る限りさせない ロールバック実行回数を低減する トランザクションで十分なロールバックセグメント領域を確保する 読みとり側が、常に必要な読みとり一貫性イメージを参照出来るようにする 診断ユーティリティ V$ROLLNAME:オンライン・ロールバック・セグメントのNAMEと番号を表示 v$rollstat:各オンライン・ロールバック・セグメントの統計を表示 − ヘッダー・トランザクション表の待機の回数 − トランザクションで書き込まれたデータの量 v$system_event の undosegmenttxslot 統計:トランザクション表への待機と、ロールバックセグメントの待機の累積統計を表示 v$waitstat:すべてのロールバック・セグメントのヘッダー・ブロックとデータ・ブロックの待機の累積統計を表示 v$transaction:ロールバック・セグメントを使用する現行のトランザクションと必要な領域の量を表示 ロールバック・セグメント・ヘッダー競合の診断 select sum(waits) / sum(gets)*100 "Ratio(%)", sum(waits) "Waits", sum(gets) "Gets" from v$rollstat;~ セグメントヘッダの待機数は、総要求数の1%未満が目安 1%以上の場合は、ロールバックセグメントの数を増やす ロールバック・セグメントの数のガイドライン ・OLTPの場合は、大体4トランザクションに一つのRBSを割り当てる ・大きめのトランザクションを流す場合は、MAXEXTENTSをUNLIMITEDにした大きめのRBSを1トランザクションに一つ割り当てる <方法> SET TRANSACTION USE ROLLBACKSEGMENT large_rbs;~ または execute dbms_transaction.use_rollback_segment ( large_rbs );~ または、作り込んであるトランザクションには小さなRBSをOFFLINEにしてしまう ロールバック・セグメントのサイズのガイドライン INITIAL/NEXTエクステントは同じサイズにして、小さいトランザクションの場合は8KB,16KB,32KB,64KB、大きいトランザクションの場合は128KB,156KB,512KB,1MB,2MB,4MBを目安にして設定 すべてのRBSのサイズを同じにして、大きいRBSは必要ないときはofflineにしておく MINEXTENTSは20に設定する 表領域は大きいトランザクションがロールバック・セグメントを拡張できるように備えて十分空き領域を確保しておく ロールバックデータのサイズ 削除:行データ全体を格納するので大量に使用 挿入:RowIDのみ格納 更新:変更する列数とそのデータ量に依存 索引:索引付きの表・列への操作ではデータ量が増加する 見積もりにはもっとも長いトランザクションを実行した後のRBSサイズをチェックするか、 select usn,write from v$rollstat;~ 現行トランザクションであった場合には、以下でチェックする select s.username, t.used_ublk, t.start_time from v$transaction, v$sessions where t.addr=s.taddr; 使用するロールバック領域の低減 ・ユーザーが定期的にトランザクションをコミットできるよう設計 ・長いトランザクションを避けてコーディング ・エクスポート・インポート操作 インポート:COMMIT=Yに設定。行のセットのサイズをBUFFERキーワードでセット エクスポート:CONSISTENT=Nに設定(但し読みとり一貫性を失う) 発生する問題 ・ロールバック領域不足によるトランザクションの失敗 RBSがエクステントの最大数に到達するか、表領域が満杯になる 解決策:RBSを大きくするか、表領域のサイズを増やす ・ORA-1555 読みとり一貫性にたいするエラー 読みとり一貫性に必要なRBSが上書きされた 解決策:ロールバック・セグメントを増やすか、さらに大きなロールバックセグメントを用意する バッチ処理のような大きなトランザクションを日中に実行しない 100%の回避は不可能 自動UNDO管理(oracle9i〜) ・設定 UNDO_MANGEMENT AUTO 自動UNDO管理 MANUAL ロールバック・セグメントの手動管理 UNDO_TABLESPACE:UNDO表領域の名前を指定(動的) 使用可能なUNDO表領域がない場合、SYSTEM 表領域の RBS を使用する UNDO_SUPPRESS_ERRORS:エラーORA-30019を抑制する UNDO_RETENTION:UNDO情報の保持期間(秒数)を指定 領域要件 (UNDO_RETENTION*1秒間あたりのUNDOブロック数+オーバーヘッド)*DB_BLOCK_SIZE 問い合わせによる計算 select ( retention * undoblock) * datablock) from ( select value "RETENTION" from v$parameter where name = undo_retion ), ( select (sum(undoblks) / sum(((end_time-begin_time)*86400))) "UNDOBLOCK" from v$undostat),( select value "DATABLOCK" from v$parameter where name = db_block_size ); 自動UNDO管理用の表領域作成 CREATE DATABASE コマンドにて UNDOTABLESPACE句を指定 指定しなかった場合、SYS_UNDOTBSという名前のUNDO表領域が作成される datafile $ORACLE_HOME/dbs/DBU1 SID .dbf AUTOEXTEND ON CREATE UNDOTABLESPACEコマンドを使用して作成 自動UNDO表領域の特徴 UNDOセグメント以外のオブジェクトを作成不可 データ・ファイルのパスとextent_management句のみ指定可能 MINIMUM EXTENTとDEFAULT STORAGEの値は、OracleServerによって自動生成 自動UNDO管理の診断 10分ごとの自動UNDOの領域割り当てと使用状況 (手動UNDO管理時にも使用可能) select undoblks, maxquerylen, maxconcurrency from v$undostat; ロック競合の診断 ロックのメカニズム ・自動管理 ・高レベルのデータ同時実行性を提供 ー DML文においては行レベルでのロック ー 問い合わせではロック不要 ・様々なレベルのデータ整合性を提供 ・排他および共有ロックモードを提供 ・ロックの期間はロック発行からコミットorロールバックまで有効 2種類のDML(INSERT,UPDATE,DELETE,SELECT...FORUPDATE)ロック ・表レベルの共有ロック(TMロック) 変更対象行のある表に対してかけられる トランザクションと競合する可能性のあるDDL操作を禁止する ー行排他(RX):INSERT,UPDATE,DELETE 他のトランザクションの同じ表内の他の行の問合/挿入/更新/削除/ロックを実行できる 他のトランザクションは、手動で表ロックして排他的に読み書きできなくなる ー行共有(RS):SELECT...FORUPDATE 他のトランザクションは、手動で表ロックして排他的に読み書きできなくなる ・行レベルの排他ロック(TXロック) 変更対象行に対してかけられる 別のトランザクションによる行の変更を禁止する 手動による排他(X)表ロック LOCKTABLEtable_nameINmode_nameMODE; mode_name:EXCLUSIVE排他ロック 表の問い合わせのみ実行可能 参照整合性制約による暗黙ロック(Oracle8i以前) ・共有(S)ロック ー参照整合性制約によりRXロックのかかった表の子表に暗黙的にSロックが取得される場合がある。 ー回避策は、子表の外部キーに索引を作成すること。 ーDML操作の実行が出来ない ・共有行排他(SRX)ロック ー参照整合性制約によりRXロックのかかった表の子表に暗黙的にSロックが取得される場合がある。 ー回避策は、子表の外部キーに索引を作成すること。 ーDML操作または共有ロックの取得が出来ない DDLロック ・排他DDLロック ーDROP TABLE,ALTER TABLEコマンドを発行したときに取得 ー対象表に別のセッションによる何らかのロックが保持されている場合、 取得できずコマンドはエラーとなる ーディクショナリ管理ではなく、 ローカル管理を利用するとデータ・ディクショナリへの更新がなくなるため、 領域トランザクション・ロックの競合がなくなる ・共有DDLロック ーGRANT / CREATE PACKAGEなどの文では参照先オブジェクトの共有DDLロックを取得 ー別のセッションによる変更または削除を禁止 ・ブレーク可能解析ロック ーライブラリ・キャッシュ内の文またはPL/SQLが参照先オブジェクトが 変更されたときに無効になるかどうかチェックするために保持する ー待機や競合は発生しない ロック競合の原因 ・不必要に高いロック・レベル ・長時間実行のトランザクション ・コミットされていない変更 ・より高いロックレベルを必要とするサード・パーティーの製品 競合の診断ビュー v$lock:すべてのロック sidが5以下のものは、BGDジョブ 他のトランザクションの待機が発生しているとき、REQUEST =1 ID1,2はオブジェクト番号 v$lock_object:オブジェクトに対するロック 競合解決のガイドライン ・ロックを保持しているユーザーにコミットorロールバックを要請 ・セッションの強制終了 select sid, serial#, username from v$session sharetype= USER ;~ alter system kill session 10,23 ; sid,serial# デッドロック ・デッドロックが発生した場合には、原因となるトランザクションの片方だけロールバックされる ・デッドロック発生時には、ユーザートレースファイルに記録される アプリケーションのチューニング概要 診断ユーティリティの概要 ・STATSPACKのSQLレポート ・EXPLAINPLANコマンド PLAN_TABLE表を作成 @?/rdbms/admin/utlxplan.sql~ EXPLAINPLAN表を実行 EXPLAINPLAN FOR SELECTlast_namefromhr.employees;~ 実行計画を表示 PLAN_TABLE表への問い合わせ utlxpls.sqlスクリプトの実行 utlxplp.sqlスクリプトの実行(パラレル問い合わせ表示) ・SQLTRACE及びTKPROFユーティリティ 初期化パラメータUSER_DUMP_DEST,MAX_DUMP_FILE_SIZE,TIMED_STATISTICSを適切に設定 SQL_TRACEをTRUEに設定 alter system session set sql_trace=TRUE;~ exec dbms_session.set_sql_trace(TRUE);~ exec dbms_system.set_sql_trace_in_session(session_id,serial_id,TRUE);~ 調査対象のアプリケーションを実行 SQL_TRACEをFALSEに設定、もしくはセッションを開始 TKPROFでユーザー・トレース・ファイルを変換して検証 $tkproftracefile.trcoutput.txt[options] 例:$tkproftracefile.trcoutput.txtSORT=exeelaEXPLAIN=oracle/oracle SYS=no TKPROFの統計情報COUNT 実行コール回数CPU CPU使用時間(秒単位)ELAPSED 合計経過時間DISK 物理読込みQUERY 一貫読込にたいする論理読込CURRENT 現在のモードにおける論理読込ROWS 処理された行 SQL*PlusのAUTOTRACE機能 PLAN_TABLE表の作成 PLUSTRACEロールの作成及び付与 @?/sqlplus/admin/plustrce.sql GRANT plustrace TO scott; AUTOTRACE機能の有効化 set autotrace [ off | on | traceonly ] [ explain | statistics ] ON:実行計画、統計情報、SQL結果のすべてを表示 TRACEONLY:実行計画、統計情報は表示するが、SQL結果は表示せず EXPLAIN:実行計画のみ表示 オプティマイザ・モード ルール・ベース ー構文とデータ・ディクショナリ情報をあわせてアクセスパスを選択 ー構文/データ・ディクショナリ駆動型 コスト・ベース ー想定されるアクセスパスを検査し、もっともコストの低いアクセス・パスを選択 ー統計駆動型 設定 インスタンスレベルでの設定 OPTIMIZER_MODE={CHOOSE|RULE|FIRST_ROWS|ALL_ROWS} セッションレベルでの設定 ALTER SESSION SET OPTIMIZER_MODE={CHOOSE|RULE|FIRST_ROWS|ALL_ROWS} 文レベルでの設定(ヒントを使用) create index gen_idx on customers(cust_gender); select /*+INDEX(customersgen_idx)*/ cust_last_name, cust_street_address, cust_postal_code from sh.customers where cust_gender= M 統計の管理 ANALYZEコマンドを使用して統計を収集/削除 ANALYZE {INDEX|TABLE|CLUSTER} object_name {COMPUTE|DELETE|ESTIMATE}STATISTICS[FOR...[SIZEn]] [SAMPLEn{ROWS|PERCENT}]; COMPUTER:表全体をみて、正確な統計を作成 ESTIMATE:表の一部から統計を概算 DELETE:統計の消去 FORTABLE:表と列ではなく、表のみの統計を収集 FORCOLUMNS:指定された列のみ FORALLCOLUMNS:すべての列の統計を収集 FORALLINDEXEDCOLUMNS:すべての索引付きの列 FORALL[LOCAL]INDEXES:表に関連づけられたすべての索引 SIZE:ヒストグラム・パケットの最大数を指定 表の統計 行数 データブロック及び空データブロックの数 利用可能な空き領域の平均 連鎖行または移行行の数 行長さの平均 ANALYZEの最終日付及びサンプルのサイズ データ・ディクショナリ・ビュー:DBA_TABLES 索引の統計 索引レベル(高さ) リーフ・ブロックと個別キーの数 キーあたりの平均リーフ・ブロック数 キーあたりの平均データ・ブロック数 索引エントリ数 クラスタ化係数 データ・ディクショナリ・ビュー:DBA_INDEXES 列の統計 個別値の数 最低値、最高値(バイナリ形式で格納) 最終ANALYZE日とサンプルのサイズ データ・ディクショナリ・ビュー:USER_TAB_COL_STATISTIヒストグラム データベース間での統計のコピー 1.統計を保持する表を作成 exec DBMS_STATS.CREATE_STAT_TABLE( HR , STATS ); 2.統計を表にコピー execDBMS_STATS.EXPORT_SCHEMA_STATS( HR , STATS ); (他に、EXPORT_COLUMN_STATS,EXPORT_INDEX_STATSなども利用可能) 3.STATS表をコピー先のデータベースへエクスポート/インポート 4.統計をデータ・ディクショナリにコピー execDBMS_STATS.IMPORT_SCHEMA_STATS( HR , STATS ); プラン・スタビリティ 実行計画を固定 異なるリリース間(Oracle8i〜)の実行計画を利用可能 OPTIMIZER_FEATURES_ENABLEを設定する事で、旧バージョンの実行計画を 利用できるようになる ストアド・アウトラインの作成方法 <複数のSQL文についてのストアド・アウトラインを作成> ALTER SESSION SET CREATE_STORED_OUTLINES=outln_educ; SELECT ... FROM...; SELECT ... FROM...; ALTER SESSION SET CREATE_STORED_OUTLINES=FALSE; <一つの文についてのストアド・アウトラインを作成> CREATE OR REPLACE OUTLINE co_cl_join FOR CATEGORY outln_educ ON~ SELECT co.crs_id,.. FROM ...; ストアド・アウトラインの使用方法 ALTER SESSION SET USED_STORED_OUTLINES = outln_educ;~ (インスタンス・レベルでも設定可能) プライベート・アウトラインの使用方法 アウトラインを手入力にて編集する 編集中のアウトラインは、現在のセッションにおいてのみ有効になっている 利用手順:アウトラインを実行できるユーザで接続。以下の権限を確認する CREATEANYOUTLINEシステム権限 SELECT_ANY_CATALOGロール DBMS_OUTLN_EDITプロシージャのEXECUTE権限 アウトライン表をスキーマ内に作成 exec DBMS_OUTLN_EDIT.CREATE_EDIT_TABLES; CREATEPRIVATEOUTLINEコマンドを利用して、アウトラインをアウトライン表にコピーし、プライベート・アウトラインを作成する CREATEPRIVATEOUTLINEp_dev01FROMdev01; OEMのOutlineEditoryやOL$HINTS表によってアウトラインを編集。表の結合順序を変更するには DBMS_OUTLN_EDIT.CHANGE_JOIN_POSを使用 編集内容のテストのため、USE_PRIVATE_OUTLINES=TRUEを設定してアウトライン分を発行するか、文に対してEXPLAIN PLANを実行、保存、公開 CREATE OR REPLACE OUTLINE dev01 FROM PRIVATE p_dev01; ストアド・アウトラインの管理 OUTLN_PKGパッケージ DROP_UNUSED:1度も使用されたことのないアウトラインの削除 DROP_BY_CAT:特定のカテゴリに割り当てられたアウトラインの削除 UPDATE_BY_CAT:1つのカテゴリから別のカテゴリへのアウトラインの再割当て ALTER/DROPOUTLINEコマンド アウトラインの名前の変更 アウトラインの再構築 アウトラインのカテゴリの変更 アウトラインはOUTLNスキーマに格納されているので、これをエクスポート/インポートする事で実行計画のエクスポート/インポートが可能 OUTLNは自動的に作成されるので、パスワード要変更 アウトラインの問い合わせ OL$:アウトライン名、カテゴリ、作成タイムスタンプ、文のテキスト OL$HINTS:OL$のアウトラインのヒント 索引 表の行の5%未満にたいして問い合わせが頻繁に実行される表示作成する Bツリー索引 リーフブロックがいっぱいになった時は、2つのリーフブロックに分割して、50%づつにデータを分ける。階層が増えたり、多くの行が削除されると、パフォーマンスが低下するー 索引のキー圧縮 COMPRESSオプションにより、索引サイズの圧縮が可能。若干のパーフォーマンス悪化の可能性あり ビットマップ索引 カーディナリティの低い列、AND,OR条件での検索を使用する列で有効。NULL値を索引に格納する。記憶領域はBツリーより少なくてすむ。DMLの発行時にパフォーマンス悪化 逆キー索引 キーのバイトを反転して、索引の偏りをさける。ただし範囲検索に利用できない 索引構成表(IOT) 主キーでのアクセス以外パフォーマンスが落ちる。2次索引を保持可(8i〜) 敷居値(PCTTHRESHOLD句で指定)を越えるデータや、指定したデータはOVERFLOW句で指定するオーバーフローセグメントに保持可 クラスタ ほとんど利用されていない 表の結合でディスクI/Oが減り、記憶領域を削減する。全表検索ではパフォーマンスが落ちる 同じクラスター・キー値を持つデータが、一つのデータブロックに収まらない場合にはパフォーマンスが落ちる 索引・クラスタとハッシュ・クラスタ マテリアライズド・ビュー ビューの問い合わせ結果をキャッシュしておく マテリアライズド・ビューの作成(要QUERY_REWRITE権限) CREATE MATERIALIZEDVIEW dept_sal_sum TABLESPACE dept_ts [ BUILD IMMEDIATE / REFRESH COMPLETE ON DEMAND / ENABLE QUERY REWRITE ] AS SELECT...; マテリアライズド・ビューのリフレッシュ 完全リフレッシュ:再度問い合わせを実行 高速(FAST)リフレッシュ:リフレッシュ以降の実表の変更部分に対してのみ適用。実表の変更記録をマテリアライズド・ビュー・ログに記録しておく方法と、新規行ROWIDに基づいたダイレクトパスロード後の高速リフレッシュを利用する方法がある リフレッシュ・モード コミット時(ONCOMMIT):実表に対する更新がコミットされた時点 指定時間(STARTWITH...NEXT):指定時間にリフレッシュ 手動リフレッシュ:DBMS_MVIEWパッケージを利用して管理 特定のマテリアライズド・ビューをリフレッシュ DBMS_MVIEW.REFRESH( CUST_SALES ,parallelism= 10); 1つ以上の実表に基づいてリフレッシュ DBMS_MVIEW.REFRESH_DEPENDENT( SALES ); リフレッシュが必要なすべてのマテリアライズド・ビューをリフレッシュ DBMS_MVIEW.REFRESH_ALL_MVIEWS; クエリー・リライト 実行計画の時点で、実表の代わりにマテリアライズド・ビューを利用することが可能 初期化パラメーターQUERY_REWRITE_ENABLEDをTRUEに設定 マテリアライズド・ビューにENABLEQUERYREWRITE句を設定 クエリー・リライトの制御 初期化パラメータ OPTIMIZER_MODE:クエリー・リライトはコストベースの場合のみ有効 QUERY_REWRITE_ENABLED(動的):FALSEに指定することで、抑制できる QUERY_REWRITE_INTEGRITY(動的) ENFORCED(DEFAULT):データの一貫性が保証される場合のみリライトする TRUSTED:強制されていない関係に基づいたリライトを許可 STALE_TOLERATED:DML操作が最後に宣言されて以降、リフレッシュされていないマテリアライズド・ビューを使用したリライトを許可 ヒント NO REWRITE:クエリー・リライトを禁止する データベース・リソースの効率的な管理 リソース・コンシューマー・グループ ユーザーのグループ。リソース割り当ての管理単位となる ユーザーは複数グループに所属できるが、1時期に有効に出来るのは1つだけ リソース・プラン リソース・コンシューマー・グループへのリソース割り当て名 リソース・プラン・ディレクティブ グループとプランの関連づけ CPUレベル:ジョブの優先度(p8まで) 配分:同CPUレベル内でのCPU配分率 管理方法 管理者にリソースマネージャーのシステム権限を割り当て exec DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SYSTEM_PRIVILEGE ( SCOTT , ADMINISTER_RESOURCE_MANAGER ,FALSE);~ 1つめのパラメータは管理者名、3つめはADMINOPTIONの負荷です ・ペンディング・エリアを作成 (リソース・マネージャーの変更内容は一旦このエリアに保存される) exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();~ ・コンシューマー・グループを作成 exec DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP ( OLTP , OnlineUser );~ ・リソースプランを作成 exec DBMS_RESOURCE_MANAGER.CREATE_PLAN ( NIGHT , DSS/Batchpriority,... );~ ・リソースプラン・ディレクティブを作成 exec DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE ( NIGHT , OLTP , ... ,100,20);~ ・ペンディング・エリアを検証 exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();~ ・ペンディング・エリアをコミット exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();~ ・ユーザーをグループに割り当て exec DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP ( MOIRA , OLTP ,FALSE);~ ・ユーザーの初期化コンシューマーグループを設定 exec DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUmER_GROUP ( MOIRA , OLTP );~ ・リソースプランの決定 初期化パラメータRESOURCE_MANGER_PLANにて設定する 動的に変更可能 ・コンシューマー・グループの切り替え exec DBMS_SESSION.SWITCH_CURREENT_GROUP ( DSS ,v_old_group,FALSE);~ ・管理者によるコンシューマー・グループの切り替え exec DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_SESS(7,13, OLTP ); exec DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_USER( MOIRA , OLTP ); データベース・リソース・マネージャの情報管理 共有サーバー構成のチューニング 共有サーバー アイドル時間のために、サーバープロセスが十分に活用されていない場合に利用 サーバー・プロセスを共有可能 OracleNetをサポートする 同時接続ユーザー数の増加 ある程度のオーバーヘッドが発生する 構成 ディスパッチャ、要求キュー、応答キュー、共有サーバプロセスにて構成 PGAにはスタック領域、共有プールにはUGAを格納 ディスパッチャの診断ツール V$SHARED_SERVER_MONITOR:最大接続数、最大セッション数、セッションの現在の使用状況を確認 V$DISPATCHER:指定したディスパッチャ・プロセスの使用状況確認 ディスパッチャの競合確認 select network "Protocol",status "Status", SUM(owned) "Clients", sum(busy)*100/(sum(busy)+sum(idle)) "BusyRate" from v$dispatcher group by network; ディスパッチャの待機に関する診断 select decode(sum(totalq),0, NoResponses ,sum(wait)/sum(totalq)) "Average wait time" from v$queueq,v$dispatcherd where q.type= Dispatcher and q.paddr=d.paddr; V$DESIPATCHER_RATE:競合の解析。CURの値がMAXの値に近い場合は、ディスパッチャの追加を検討する。CURの値が逆に低い場合は削減を検討する。(ALTER SYSTEMSETDISPATCHERSにて動的に変更可能) 共有サーバーの診断 共有サーバ数はBusy時はMAX_SHARED_SERVERSに到達するまで、徐々にPMONによって動的に起動 idle時はSHARED_SERVERS(動的パラメータ)になるまで削除される 現在の状態を確認 select name,requests,status,busy*100/busy+idle)"BUSY%" from v$shared_server where status != QUIT ; 共有サーバープロセスの競合 select decode(totalq,0, NoRequests ,wait/totalq|| hundredthsofseconds ) from v$queue where type= COMMON ;~ v$circuitビュー:サーバー・アドレス、ディスパッチャ・アドレス、ユーザー・セッション・アドレスの確認 V$SHARED_SERVER:共有サーバープロセスに関する情報 共有サーバーのトラブルの一般的な原因 リスナーが実行されていない 共有サーバーの初期化パラメーターの設定が適切でない ディスパッチャ・プロセスが強制終了されている SYSDBAユーザーとして接続しようとした PROCESSESパラメーターの値が小さすぎる オペレーティング・システム及び各種データベース・システムのチューニング メモリのチューニング OSが対応していればLOCK_SGA初期化パラメータにより、SGAを実メモリ上にロックする I/Oのチューニング ディスクとディスクコントローラー間の負荷の均衡化 ロー・デバイスの使用 CPU使用率のチューニング ガイドライン 最大CPU使用率:90% 最大OS/アプリ処理比:40/60 CPU負荷は各CPUで均衡化 OLTPシステム 高スループットの挿入/更新集約型 大容量のデータが継続的に増加 多数のユーザーが同時アクセスを実行 チューニングの目標 可用性、スピード、同時実行性、リカバリ能力 要件 エクステントの明示的な割り当てにより、動的な割り当てによる負荷をさける 索引の数を押さえて、更新時の負荷をさける 挿入に使用する順次列に逆キー索引を使用して、Bツリーブロックが頻繁に分割するのをさける 索引は定期的に再構築を実施 マテリアライズド・ビュー、索引構成表の利用の検討 考慮事項 コードの共有化 CURSOR_SHARINGパラメータを使用して解析済みコードの共有化 DSSシステム 大量のデータに対して問い合わせを実行 全表走査を多用 チューニングの目標:迅速な応答、正確性 パラレル問い合わせ機能は、データウェアハウス環境を対象にしている 要件 DB_BLOCK_SIZEが大きければ集中的な読み込み操作が高速に処理される DB_FILE_MULTI_READ_COUNTは値を大きくすれば、表走査の見積もりコストが低くなる エクステントサイズをこれらのパラメーター値の倍数に設定 ANALYZEまたはDBMS_STATSを定期的に実行 可能であればビットマップ索引を使用 主キー検索には索引構成表を使用 不均一な索引付き列にはヒストグラムを生成 ハッシュクラスタの使用を検討 考慮事項 解析時間は重要ではない 実行計画の最適化が目標 パラレル問い合わせの使用 ヒントの使用 問い合わせのロジックにPL/SQLの使用検討 バインド変数は問題発生の原因となりうる(ヒストグラムが使用されないなど)
https://w.atwiki.jp/sc2-strategy/pages/197.html
Heart of the Swarm Balance Update (2013/11/11) Heart of the Swarm Balance Update (2013/8/28) Heart of the Swarm Balance Update (2013/7/11) Patch 2.0.9 (2013/6/21) Heart of the Swarm Balance Update (2013/5/13) HotSの変更点TerranTerranの変更点 Widow Mine Hellbat ProtossProtossの変更点 Mothership Core Oracle Tempest ZergZergの変更点 Swarm HostLocust Viper コメント ※対戦のゲームバランスに関わる変更点のみを載せています インターフェースの変更やバグフィックス等はこちらを参照して下さい Heart of the Swarm Balance Update (2013/11/11) Oracle 移動速度が3.375から4に増加 加速度が2から3に増加 Revelationされているバロウ/クロークユニットはアンバロウ/アンクロークした後に再び姿を現す仕様に Armory ファクトリーユニットと航空ユニットの攻撃アップグレードが共有に Siege Tank シージ中の攻撃間隔が3.0秒から2.8秒に減少 Widow Mine Sentinel Missilesのスプラッシュダメージがターゲットとの距離に応じて威力が減少する仕様に 半径1.25以内は40ダメージ 1.25から1.5までは20ダメージ 1.5から1.75までは10ダメージ Roach Warren The Tunneling Clawsアップグレードのバロウ中のローチの移動速度が1.41から2に増加 Heart of the Swarm Balance Update (2013/8/28) Overseer The Pneumatized Carapaceアップグレードを入れた後の移動速度が2.75から3.375に Heart of the Swarm Balance Update (2013/7/11) Hellbat 攻撃力が18(+12対Light)から18に The Infernal Pre-Igniterアップグレードを入れる事で攻撃力が18(+12対Light)に Banshee クローキング研究のコストが200/200から100/100に Patch 2.0.9 (2013/6/21) Warp Prism 移動速度が2.5から2.953に 加速度が2.125から2.625に Heart of the Swarm Balance Update (2013/5/13) Spore Crawler 攻撃力が15(+15対Bio)から15(+30対Bio)に HotSの変更点 比較対象 WoL Patch2.0.4(2013/2/19) HotS beta Balance Update#15(2013/2/22) Terran Terranの変更点 ファクトリーユニットと航空ユニットの防御アップグレードが共有に Reaper HPが50から60に Tech Labなしで生産可能に 移動速度が2.9531から3.75に 新スキル"Combat Drugs"の追加 10秒間攻撃を受けないと自動的に回復モードに入りHPが毎秒2ずつ回復する 対Lightボーナス、対建築物ボーナスの削除 スピードアップ研究の削除 Hellion 新研究"Transformation Servos" 150/150 110秒 研究場所:FactoryのTech Lab 前提条件Armory Hellbatへの変形、Hellbatからの変形が可能になる(変形時間は4秒) Siege Tank Siege Modeが研究不要に Thor 新武装"250mm Punisher Cannons"の追加:対空攻撃力24、攻撃間隔2秒 (単体攻撃) 今までの範囲対空攻撃と切り替え可能になっていて切り替えには4秒かかる スキル"250mm Strike Cannons"の削除 Medivac 新スキル"Ignite Afterburners"の追加 使用すると8秒間移動速度が4.25に上がる。クールダウンは20秒 Raven Seeker Missile 消費エネルギーが125から75に ターゲットに選べる射程が6から10に 発射してから5秒間は動かず当たっても爆発しなくなった 5秒経過後にターゲットまでの距離が13以上あると不発、 距離が13以下なら高速で相手を追いかけて爆発するという仕様に Battlecruiser Yamato Cannon 消費エネルギーが125→100に Widow Mine ミネラル75 ガス25 生産時間40秒 サプライ2 輸送サプライ2 前提条件:Factory HP90 装甲0 地上ユニット Mechanical Light 移動速度2.8125 視界7 スキル:Sentinel Missiles アクティブモード中に敵が範囲内に入ってくると自動的に発動する 対地&対空ダメージ125(+35対シールド)、スプラッシュダメージ40 射程5 クールダウン40秒 スキル:Activate Mine Burrowしてアクティブモードに。移動ができなくなる。Burrowには3秒かかる 研究:Drilling Claws 150/150 110秒 Burrowにかかる時間が3秒から1秒になる Hellbat ミネラル100 ガス0 生産30秒 サプライ2 輸送サプライ4 前提条件:Armory HP135 装甲0 地上ユニット Bio Mechanical Light 対地攻撃力18(+12対Light) 攻撃間隔2秒 射程2 扇状範囲攻撃 移動速度2.25 視界10 スキル:Hellion Mode Hellionに変形する。要Transformation Servos研究、変形時間は4秒 Protoss Protossの変更点 坂上へのワープインが視界があっても不可能に Sentry Hallucinationが研究不要に Stalker Blinkの研究時間が140秒から170秒に Dark Templar Dark Shrineのコストが100/250から150/150に Void Ray サプライが3から4に 攻撃間隔が0.6秒から0.5秒に Prismatic Beamsの削除 新スキルPrismatic Alignmentの追加 20秒間対Armoredダメージが6増加する。クールダウンは1分 Phoenix 射程が4から5に Mothership Mothership Coreから引き続いてTime Warpが使える Voltexの削除 Mothership Core ミネラル100 ガス100 生産30秒 サプライ2 前提条件:Cybernetics Core HP130+60 装甲1 エアユニット Mechanical Armored Psionic 対地攻撃力8 攻撃間隔0.85秒 射程5 移動速度1.875 視界14 スキル1:Photon Overcharge エネルギー100 射程10 効果時間60秒 指定したネクサスが射程13、攻撃力20の攻撃能力を得る スキル2:Mass Recall エネルギー100 周囲のユニットと共に指定したネクサスに帰還する スキル3:Time Warp エネルギー75 射程9 効果時間30秒 範囲3.5 指定した地点にテンポラルフィールドを発生させその範囲内にいる地上ユニットの移動速度を半分にする スキル4:Upgrade To Mothership コスト300/300 変異時間100秒 前提条件:Fleet Beacon Mothershipにアップグレードする Oracle ミネラル150 ガス150 生産50秒 サプライ3 前提条件:Stargate HP100+60 装甲0 エアユニット Mechanical Light Psionic 移動速度3.375 視界10 スキル1:Revelation エネルギー75 射程9 範囲6 効果時間60秒 指定した地点の近くの敵ユニットと建物の視界を得る スキル2:Envision エネルギー50 射程14 効果範囲60秒 自身がディテクション能力を得る スキル3:Pulsar Beam エネルギーは発動時に25消費+解除するまで毎秒2ずつ消費 自身が対地攻撃能力を得る(攻撃力15(+10対Light)) Tempest ミネラル300 ガス200 生産60秒 サプライ4 前提条件:Fleet Beacon HP300+150 装甲2 エアユニット Mechanical Armored Massive 移動速度1.875 視界12 対地攻撃力30 攻撃間隔3.3秒 射程15 対空攻撃力30(+50 対Massive) 攻撃間隔3.3秒 射程15 Zerg Zergの変更点 Burrow研究とOL移動速度アップ研究の前提条件がHatcheryに Creep Tumor 坂にも設置可能に Spine Crawler 封鎖が可能に Spore Crawler 前提条件がSpawning Poolに 攻撃力が15から15(+15対Bio)に Queen 距離3以内の地上ユニットへの攻撃がWoL1.4.2以前のような殴り攻撃になりPDDの対象外になった (距離4~5への攻撃はWoL1.4.3以降と同様PDDの対象内) Hydralisk 研究"Muscular Augments"の追加。150/150の100秒 研究が完了するとクリープ外での移動速度が2.25から2.81に(クリープ上では3.375のまま) Mutalisk 移動速度が3.75から4に 自然回復量が毎秒0.2734から1に Infestor Fungal Growth 即時発動ではなく速度12の投擲物に 射程が8から10に Ultralisk 攻撃力が15(+20対Armored)から一律35に Swarm Host ミネラル200 ガス100 生産40秒 サプライ3 輸送サプライ4 前提条件:Infestation Pit HP160 装甲1 地上ユニット Armored Bio 移動速度2.25(クリープ上では2.925) 視界10 (Burrow研究を入れなくてもBurrowが可能) スキル:Spawn Locusts クールダウン25秒 Burrow中のみ使用可能 (デフォルトでオートキャスト) Locustを2匹生産する。Locustの生存時間は15秒、研究後は25秒 研究:Increased Locust Lifetime コスト200/200 研究120秒 研究場所:Infestation Pit Locustの生存時間が10秒増加する Locust HP65 装甲0 地上ユニット Light Bio 移動速度1.875(クリープ上では2.625) 視界6 対地攻撃力12 攻撃間隔0.86秒 射程3 Viper ミネラル100 ガス200 生産40秒 サプライ3 前提条件:Hive HP150 装甲1 エアユニット Armored Bio Psionic 移動速度2.95 視界11 攻撃なし スキル1:Blinding Cloud エネルギー100 射程9 範囲2 指定した地点に14秒間霧を発生させる。霧の中にいるユニットは近接攻撃しかできなくなる スキル2:Abduct エネルギー75 射程9 指定した敵もしくは味方ユニットをバイパーのいる位置に引き寄せる スキル3:Consume 射程7 20秒間掛けて味方の建物のHPを200吸い上げてエネルギーを50回復する コメント 名前 コメント
https://w.atwiki.jp/my-sql/pages/103.html
HOME 関数 日付と時刻関数 SUBDATE SUBDATE SUBDATE(date,INTERVAL expr type) SUBDATE(expr,days) 2 番目の引数の INTERVAL を指定する形式で呼び出した場合、SUBDATE() は DATE_SUB() とシノニムになる。 mysql SELECT DATE_SUB( 1998-01-02 , INTERVAL 31 DAY); - 1997-12-02 mysql SELECT SUBDATE( 1998-01-02 , INTERVAL 31 DAY); - 1997-12-02 2 番目の構文は MySQL 4.1.1 以降で使用できる。expr には日付式か日付時刻式を指定し、days には expr から差し引く日数を指定する。 mysql SELECT SUBDATE( 1998-01-02 12 00 00 , 31); - 1997-12-02 12 00 00
https://w.atwiki.jp/prima/pages/1160.html
Blogs on Daniel Sans #bf レパートリー 作曲家名(全角フルネーム)に置き換えてください [部分編集] 作曲家名(全角フルネーム)に置き換えてください 作品名(全角)に置き換えてください役名(全角)に置き換えてください Last Update 2011/01/30 01 09ページ先頭へ
https://w.atwiki.jp/nicepaper/pages/114.html
PHPでプログラムを書いていると、時々「あれ、なんて打つんだっけ?」と戸惑うことがあります。そんな中で覚書しておきます。MySQLでよく使うコマンド一覧についてまとめていきたいと思います。6月30日記事 目次 PHP側でよく使うコマンド SELECT INSERT UPDATE MySQL側でよく使うコマンド PHP側でよく使うコマンド SELECT SELECT データを取得する アスタリスク(*)があるとカラム全部を取得する。 SELECT * FROM テーブル名 WHIERE カラム名1 = 値 ; カラム名1の値が値1の場合のidとcolumn1とcolumn2のフィールドを取得する。 SELECT (id,column1,column2) FROM テーブル名 WHIERE カラム名1 = 値1 ; INSERT INSERT フィールドを挿入する フィールドを挿入する。 INSERT INTO テーブル名 (カラム名1,カラム名2,カラム3) VALUES( 値1 , 値2 , 値3 ); UPDATE UPDATE データを更新する フィールドの値を更新する。 UPDATE テーブル名 SET カラム名1= 値1 ,カラム名2= 値2 WHERE カラム名3 = 値3 ; MySQL側でよく使うコマンド CREATE DATABASE データベース名; データベースを作る DROP DATABASE データベース名; データベースを削除する SHOW DATABASES; データベース一覧表示 USE データベース名; データベースを使用する DROP TABLE テーブル名; テーブルの削除 DESC テーブル名; テーブルの詳細表示 DELETE FROM テーブル名 フィールドデータを削除する。 CREATE TABLE データベース名.テーブル名(型の指定・・・) テーブルを作る
https://w.atwiki.jp/hama170628/pages/24.html
Oracle10gXEインストール ダウンロード http //www.oracle.com/technology/software/products/database/xe/index.html # rpm -ivh /media/cdrecorder/Fedora/RPMS/libaio-0.3.104-2.i386.rpm 準備中... ########################################### [100%] 1 oracle-xe-univ ########################################### [100%] Executing Post-install steps... You must run /etc/init.d/oracle-xe configure as the root user to configure the database. [root@]# ls Desktop oracle-xe-univ-10.2.0.1-1.0.i386.rpm [root@]# /etc/init.d/oracle-xe configure Oracle Database 10g Express Edition Configuration ------------------------------------------------- This will configure on-boot properties of Oracle Database 10g Express Edition. The following questions will determine whether the database should be starting upon system boot, the ports it will use, and the passwords that will be used for database accounts. Press Enter to accept the defaults. Ctrl-C will abort. br() Specify the HTTP port that will be used for Oracle Application Express [8080] Specify a port that will be used for the database listener [1521] Specify a password to be used for database accounts. Note that the same password will be used for SYS and SYSTEM. Oracle recommends the use of different passwords for each database account. This can be done after initial configuration Confirm the password Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y] Starting Oracle Net Listener...Done Configuring Database... Done Starting Oracle Database 10g Express Edition Instance...Done Installation Completed Successfully. To access the Database Home Page go to "http //127.0.0.1 8080/apex" 起動 #/etc/init.d/oracle-xe start 停止 #/etc/init.d/oracle-xe stop OS起動時にデータベースを開始する設定にした場合は、 #service oracle-xe { start | stop } 接続するユーザの.bash_profileに以下を追加 . /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh [root@netv01 admin]# sqlplus SQL*Plus Release 10.2.0.1.0 - Production on 土 3月 31 03 23 03 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. ユーザー名を入力してください SYSTEM パスワードを入力してください デフォルトはMANAGER Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production ログオンせずに起動する場合は $ sqlplus /nolog SQL*Plus Release 10.2.0.1.0 - Production on 水 11月 4 00 05 30 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. ※起動した後で接続 SQL connect system/XXXX @192.168.1.XXX/XE ネットワーク設定の編集 ※編集せずに起動可能 場所 /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/admin/ ①listener.ora # listener.ora Network Configuration File SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = XE) (GLOBAL_DBNAME = XE.send.test) (ORACLE_HOME = /usr/lib/oracle/xe/app/oracle/product/10.2.0/server) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = netv01.send.test)(PORT = 1521)) ) ) ) ②tnsnames.ora # tnsnames.ora Network Configuration File XE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = netv01.send.test)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = XE.send.test) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) ) 接続テスト: SQL connect system/**pass**@netv01.send.test 1521/XE SQL create table mail_test( 2 no number, 3 from_addr varchar2(256), 4 rcpt_addr varchar2(256), 5 count number 6 ); SQL create user hama identified by hama ; SQL update mail_test set count=count+1 where FROM_ADDR= tome@send.test AND RCPT_ADDR= hama@recv.test ;
https://w.atwiki.jp/irukakiss/pages/69.html
自宅サーバー・Apche・PHP・PDO・SQLite環境でのメモ帳アプリの活用 メモ帳アプリはすべてが入っている教材でもあるが、実際そのまま使える道具でもある。これをサーバーに置いて本文にHTMLやXMLを書けば、それらの文はそのままWEBページに表示できるでしょ。 極端な話、WEBページのすべての文をデータベースからデータとして拾ってきて構成することもできる。 そこまでやることはないが、例えば新着情報や、日替わりメニューや、リンクや、RSSや、その他頻繁に更新する部分はデータベースのデータとしておけば何時でもどこでもブラウザさえ開ければメモ帳アプリにアクセスして編集できるのだ。極端な話、携帯からでもできるだろう。FTPサーバーもFTPソフト必要ない。 僕は自宅のWindowsパソコン1台をWEBサーバーにしているが、メールはもちろんFTPもやっていない。ポートを開けると、何かと面倒なので。更新は直接書きかえるか、@WikiのFTPにHTML文などを入れて、それを参照している部分はそのファイルを書きかえている。データベースにホームページの内容が入っていれば、そうした不便から開放される。サーバーはWEBサーバーだけでよい。 メモ帳アプリの具体的な使い方 公開しているディレクトリにメモ帳アプリを置かないと「いつでも、どこでも」更新できないので意味がない。公開ディレクトリに置くためには自分(または管理者)しか操作できないように一応の対策をする。国家機密じゃあるまいしそんなに大そうには考えず、PHPによるベーシック認証ですませる。レッツPHP!の小物の中の-パスワード制限-のプログラムを使わせていただく。レッツPHP!というサイトは本当に好感が持てる。シンプルなのによーく考えられている。メモ帳アプリのプログラムの先頭にinclude_once( auth.php );と書くだけでベーシック認証しないとプログラムが走らないようになるのだ。無論パスワードを書いたテキストファイルは公開ディレクトリ以外に置いてフルパスで指定。こうすればかなり悪意がない限りデータを書きかえられることはない。なお、SQLiteのデータベースファイルはこれも公開ディレクトリより上に置けばダウンロードされることもない。かなりセキュア。 メモ帳アプリで「新着情報」、「お知らせ」などのHTMLやRSSのXMLを登録し、実際にそれらを表示するページに次のようなPHPを挿入すればちゃんと表示される。これによって、「いつでもどこでも」手軽に内容を更新できるというわけ。FTPサーバーも、FTPソフトもいらない。ブラウザさえ開くことができる環境なら世界中どこからでも自宅サーバーの更新ができる。 メモ帳アプリに習ってプリペアでやるなら、 ?php // データベースに接続 $conn = new PDO( sqlite memo.sqlite ); $sql = SELECT * FROM memo WHERE id = 5 ; $stmt = $conn- prepare($sql); $stmt- execute(); $row = $stmt- fetch(PDO FETCH_ASSOC); echo $row[ contents ]; $conn = null; ? まあ、でも普通はクエリにSQL文を書くでしょ。 ?php $conn = new PDO( sqlite memo.sqlite );// データベースに接続 $stmt = $conn- query( SELECT * FROM memo WHERE id = 5 );//検索 $row = $stmt- fetch(PDO FETCH_ASSOC);//行全体を連想配列として取得 $conn = null;//接続を切る echo $row[ contents ];//本文を表示 ? この例ではidで検索しているが、titleで「新着情報」とか「お知らせ」とかで検索したほうがわかりやすいと思う。 ?php $conn = new PDO( sqlite 相対指定パス/memo.sqlite );// データベースに接続 $stmt = $conn- query( SELECT contents FROM memo WHERE title = 新着情報 );//検索 $row = $stmt- fetch(PDO FETCH_ASSOC);//行全体を連想配列として取得 $conn = null;//接続を切る echo $row[ contents ];//本文を表示? 普通に表示すると、なぜか「 」だとか漢字の「定」の文字だとかの前にやたらとバックスラッシュが入る。PHPでは普通にあることなのか、それを取り除く関数があるのだ。stripslashesというやつです。これを使えば解決。 だけど根本はフォームでPOSTする度にセキュリティーの関係でこうなるらしい。それで、フォームからのPOSTを受ける$_POSTという連想配列のようそについて、stripslashesを施してやれば、全て解決する。メモ帳アプリであれば、 // データの取得 $act = (isset($_POST[ act ])) ? $_POST[ act ] ; $id = (isset($_REQUEST[ id ])) ? intval($_REQUEST[ id ]) ; $contents = (isset($_POST[ contents ])) ? stripslashes($_POST[ contents ]) ; $title = (isset($_POST[ title ])) ? stripslashes($_POST[ title ]) (無題) ; $dt = date( Y-m-d H i s ); ここのところでやれば他のところは何もしないほうがいい。いろんなところでやると、5C問題にぶち当たる。「ソ」や「表」が文字化け。これは、\を取り除きすぎなんだよ。めったやたらととっぱらっちゃ駄目です。 stripslashesは$_POSTで使えば次のfgetcsvであろうが、shift-jisでも問題なく使える。 メモ帳アプリを改造してCSVファイルをインポート CSVのインポートはGUIやコマンドラインツールに用意されているが、実際やったら文字化けで無理。調べると、SQLiteはUTF-8でないと駄目で、HTMLもUTF-8にしろっていうこと。今更そんなのやってられない。そういう流れだったら逆らえないし、いずれやることになるだろうが、率先してやることはない。SHIFT-JISでいいじゃないか。ふつうにSQLite使えていると思うんだがね。要するにはじめから用意されているやつでやったら、文字化けでお手上げ。この辺のことに悩み出したら、どれだけ時間がかかるかわからない。アミーゴで作ったDBのファイルはCSVにできるので、ともかくこれをさっさとインポートしないと話が始まらない。 というわけで、不器用でも力ずくで、インポートする。PHPのfgetcsvで1行ずつ読み込み、メモ帳アプリのadd_dataファンクションで書き込んでいけばよいだけのこと。文字化けに悩む時間のことを思えば手間はましというもの。 9個ぐらいのフィールドで、ためしにやってみたが110行ほどのCSVをインポートするのに5秒ぐらいかかるかな。1万行じゃあるまいし。この時間は問題にならない。 ポイントは、fgetcsvでCSVデータを1行ずつ読み込んでファイルが終わるまで配列に入れるという原始的方法。 POSTで、読み込むCSVファイルのファイル名のみを取得している。これは当てずっぽうがたまたま当たっているような感じで、邪道かもしれない。普通はフォームで、enctype= multipart/form-data を指定してPOSTすれば$_FILES[ file ][ name ]にファイル名が返るはずだが、どうもそれがうまくいかない。 enctype= multipart/form-data をしなかったら$_POST[ file ]にファイル名が入るのだ。事実として。それでいいじゃないか。できるんだから。 html !-- 1.このプログラムは生成したいデータベースファイルを置く場所(ディレクトリ)と同じ場所に置く。 2.さらに、インポートするcsvファイルを同じ場所に置く。 3.生成するデータベースファイル名確認(69行目 menu.sqlite)。 4.生成するテーブル名確認(72,90,115行目 menu)。 5.このプログラムをブラウザで実行する。 6.インポートするcsvファイルを参照して指定。 7.インポートボタンを押す。 -- head meta http-equiv= Content-Type content= text/html; charset=Shift_JIS title メニューアプリケーション(PDO関数)CSVファイルインポート用 /title meta http-equiv= content-style-type content= text/css style type= text/css !-- .sfont{ font-size 12px } -- /style /head body class= sfont h4 メニューアプリケーション(PDO関数)CSVファイルインポート用 /h4 ?php // データの取得 $act = (isset($_POST[ act ])) ? $_POST[ act ] ; $impfn = (isset($_POST[ impfn ])) ? stripslashes($_POST[ impfn ]) ;//インポートするcsvファイル名 //$dt = date( Y-m-d H i s );//インポートファイルの最終更新日時を採用するときはこの行コメントアウト※54行目を使う // データベースの初期設定 $conn = init(); //処理 if ($act == インポート and $impfn ) { //CSVファイルを開く //$fnで指定するファイルを読み取りモードで開く $fn=$impfn; $fp = fopen($fn, r ); //CSVファイルのパスとファイル名 //CSVデータを1行ずつ読み込んでファイルが終わるまで配列に入れる。 $counter = 1; while ($data = fgetcsv($fp, 10000)) { //変数に代入 //$id=$data[0]; $name=$data[1]; $comment=$data[2]; $hyou=$data[3]; $kakaku=$data[4]; $kakaku2=$data[5]; $bunrui=$data[6]; $aji=$data[7]; $dt=$data[8];//インポート時の最終更新日時を採用するときはこの行コメントアウト※31行目を使う add_data($conn, $name, $comment, $hyou, $kakaku, $kakaku2, $bunrui, $aji, $dt); //Wile文の終端 $counter++ ; } //ファイルを閉じる fclose($fp); //if文の終端 echo $impfn. をインポートしました。 ; } // データベースの初期設定 function init() { // データベースに接続(カレントフォルダのmenu.sqliteというファイル名) $conn = new PDO( sqlite menu.sqlite ); // データベースの作成 $sql = CREATE TABLE IF NOT EXISTS menu ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, comment TEXT NOT NULL, hyou, kakaku, kakaku2, bunrui, aji, dt TEXT NOT NULL ) ; $stmt = $conn- prepare($sql); $stmt- execute(); return $conn; } // データの追加 function add_data($conn, $name, $comment, $hyou, $kakaku, $kakaku2, $bunrui, $aji, $dt) { $sql = INSERT INTO menu(name, comment, hyou, kakaku, kakaku2, bunrui, aji, dt) VALUES( name, comment, hyou, kakaku, kakaku2, bunrui, aji, dt) ; $stmt = $conn- prepare($sql); $stmt- bindParam( name , $name); $stmt- bindParam( comment , $comment); $stmt- bindParam( hyou , $hyou); $stmt- bindParam( kakaku , $kakaku); $stmt- bindParam( kakaku2 , $kakaku2); $stmt- bindParam( bunrui , $bunrui); $stmt- bindParam( aji , $aji); $stmt- bindParam( dt , $dt); $stmt- execute(); $id = $conn- lastInsertId(); return $id; } ? !-- フォーム -- form method= POST action= ?php echo $_SERVER[ SCRIPT_NAME ]? input type= file name= impfn size= 30 input type= submit value= インポート name= act onClick= return confirm( インポートします ) /form ?php // 全データの取得 $sql = SELECT * FROM menu ORDER BY id ; $stmt = $conn- prepare($sql); $stmt- execute(); // データの一覧表示 echo table class=\ sfont\ border=\ 1\ ; echo tr ; echo td ID /td ; echo td 名称 /td ; echo td 得票 /td ; echo td 価格 /td ; echo td 最終更新時刻 /td ; echo /tr ; while ($row = $stmt- fetch()) { echo tr ; echo td . $row[ id ] . /td ; echo td . $row[ name ] . /td ; echo td . $row[ hyou ] . /td ; echo td . $row[ kakaku ] . /td ; echo td . $row[ dt ] . /td ; echo /tr ; } echo /table ; ? /body /html ともかくこれで、アミーゴのデータを全部SQLiteに移行した。文字化けなし。 全くなし。 SHIFT-JISであろうとfgetcsvであろうと文字化けなし。 $_POSTだけバックスラッシュ取ればいいのだ! 文字化けアレルギーにかかっていた。 stripslashesは、やたらと使うもんじゃない。これを使いすぎて、\が無くなって,逆に5C問題が発生する。基礎的な設定が正しければstripslashesはPOSTを受けた直後の$_POSTにだけ施せばよろしい。例えば、stripslashes($_POST[ comment ])みたいにPOSTを受ければそれで何もかもうまくいく。下手に対処療法ばかりやってはいけない。対処療法が症状を生みさらに対処療法をするとそれがまた症状を生むという悪循環に陥る。おおもとの部分を解決しなければ永遠のいたちごっこになる。 カクテルはさすがに26種類のフィールドで、486行だから時間がPHP既定の30秒では足りず、 Fatal error Maximum execution time of 30 となった。 プログラムの先頭に秒数を書く。120秒でどうだ。 set_time_limit(120); 結果、65秒であった。2年かけて入力したデータだからな。65秒ぐらいかかってくれたほうがうれしい。 $conn = new PDO( sqlite パス/cocktail.db );// データベースに接続 $stmt = $conn- query( SELECT count (*) FROM cocktail where {$where} );//countで、セレクトされる行数を取得する。 $total = $stmt- fetchColumn();//カウントの結果はこれで。なお(*)は(id)などnotnullのフィールドでもいい。 $conn = null;//接続を切る 検索結果の表示でページャー(ページ送り機能)を使いたかったので、検索結果件数を上のコードで取得。{$where}はWhere句の内容。 ページャーはレッツPHPさんのお世話になりました。よくできたプログラム。わかりやすいし。 http //php.s3.to/simple/
https://w.atwiki.jp/ayikat/pages/73.html
※gradle http //www.ntts.co.jp/publish/column/tec/java_03/ site http //www.slideshare.net/uehaj/jjug-ccc-groovy2x20130511 http //grails.jp/news/2013-17.html http //grails.org/doc/1.0.x/ http //www.ibm.com/developerworks/jp/views/java/libraryview.jsp?search_by=Grails+%E3%82%92%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%99%E3%82%8B S_TACT=105AGX90 S_CMP=content http //d.hatena.ne.jp/mottsnite/20130509/1368113688 modal dialog http //zenofchicken.wordpress.com/2010/12/27/a-taglib-to-create-modal-dialogs-with-jqueryui-and-grails/ http //grails.org/plugin/simple-modal simpleModal includes / simpleModal javascript / 本 http //pragprog.com/book/sdgrvr/groovy-recipes View Test Spock CodeNarc Calender Memo Domain constraints validator Custom name() motherName (validator {val, obj - if(val.size() 1 obj.name.size() 1) return [ validator.message ] }) Service Criteria Service @Transactional(readOnly = true) def searchCriteria(params) { def m_itemCriteria = M_item.createCriteria() List results = m_itemCriteria.list() { if(params?.name) { eq("name", params.name) } maxResults(10) order("name", "desc") } } Controller def find() { List results = m_itemService.searchCriteria(params) render(view list , model [m_itemInstanceList results, m_itemInstanceTotal results.size()]) } ※Sample def testCriteria = test.createCriteria() List results = testCriteria .list(max 10, offset 0) { eq("name", params.name) and { between("balance", 500, 1000) eq("branch", "London") } ilike("name","%${params.name}%") between("balance", 500, 1000) eq("branch", "London") or { like("holderFirstName", "Fred%") like("holderFirstName", "Barney%") } maxResults(10) firstResult(50) order("holderLastName", "desc") } //println "Accounts of ${results.totalCount}" //println "Rendering ${results.size()}" render(view list , model [testInstanceList results, testInstanceTotal results.size()]) Enum Enum package gapp enum GenderEnum { MALE( Male , msg.male.lavel ), FEMALE( Female , msg.female.lavel ), TRANCE( Trance , msg.trance.lavel ) private final String val private final String msg public GenderEnum(String val, String msg) { this.val = val this.msg = msg } String value() { return val } String msg() { return msg } } Domain GenderEnum gender static mapping = { version false } View g select name="action" from="${com.domain.ActionEnum?.values()}" keys="${com.domain.ActionEnum.values()*.name()}" required="" value="${xyzInstance?.action?.name()}"/ g select optionKey= id name="action" from="${com.domain.ActionEnum?.values()}" required="" value="${xyzInstance?.action}"/ Domain //複合PK static mapping = { id composite [ holdYear , member ] } // String toString(){ return name } //db mapping static mapping = { table some_other_table_name columns { name column airline_name url column link frequentFlyer column ff_id } } テーブルに格納されないドメイン・クラスのフィールドを設定するには、静的 transients 行を追加 static transients = ["tempField1", "tempField2"] Car car static embedded = { car } static mapping = { songs cascade delete discriminator xxxxx discriminator value 42 , type integer tablePerHierarchy false } コンボ・ボックス主キー表示時の漏えい回避 String toString(){ return name } //id to String String id static mapping = { table "m_item" id column jan_code , generator assigned } M_item m_item static mapping = { m_item column jan_code } Pagenateページ番号非表示化 style !-- .pagination .step, .pagination .currentStep { display none ; } -- /style java.util.List表示 controller def list() { List NewClass results2 = new ArrayList NewClass () NewClass m_item2 = new NewClass() m_item2.setName("java1") results2.add(m_item2) NewClass m_item3 = new NewClass() m_item3.setName("java2") results2.add(m_item3) render(view list m_itemInstanceList2 results2, m_itemInstanceTotal results.size()]) } gsp g each in="${m_itemInstanceList2}" status="j" var="m_itemInstance2" tr class="${(j % 2) == 0 ? even odd }" td ${j+1} /td %-- td c out value="${m_itemInstance2.name}"/ /td --% td ${m_itemInstance2.getName()} /td /tr /g each CloudFoundary 環境 Cloud Foundryプラグインのインストール grails install-plugin cloud-foundry grails-app/conf/Config.groovy修正 例) grails.plugin.cloudfoundry.usernameアカウント用のユーザ名/メールアドレスなし(必須) grails.plugin.cloudfoundry.passwordアカウント用のパスワードなし(必須) grails.plugin.cloudfoundry.targetAPIサーバ名 api.cloudfoundry.com grails.plugin.cloudfoundry.appnameアプリケーション名Grailsアプリケーションの名前 grails.plugin.cloudfoundry.showStackTraceコンソールにスタックトレースを表示するかどうかfalse grails.plugin.cloudfoundry.testStartWithGetGETリクエストで開始や再起動をテストするかどうかtrue grails.plugin.cloudfoundry.testStartGetUrl上記プロパティがtrueの場合に使用するURLアプリケーションのURL grails.plugin.cloudfoundry.datasource.disableTimeoutAutoconfigurationMySQLデータソースのコネクションタイムアウトチェックの自動設定を無効にするかどうかtrue grails.plugin.cloudfoundry.username= grails.plugin.cloudfoundry.password= grails.plugin.cloudfoundry.target= api.cloudfoundry.com grails.plugin.cloudfoundry.appname=gapp grails.plugin.cloudfoundry.showStackTrace=false grails.plugin.cloudfoundry.testStartWithGet=true grails.plugin.cloudfoundry.testStartGetUrl=gapp grails.plugin.cloudfoundry.datasource.disableTimeoutAutoconfiguration=true BuildConfig.groovy追記 mavenRepo "http //maven.springframework.org/milestone/" compile "cloudfoundry 1.2.3" grails refresh-dependencies grails dependencies-report w3m target/dependencies-report/index.html コマンド アプリのデプロイ grails prod cf-push アプリのアップデート grails prod cf-update インスタンス数変更 grails cf-show-instances grails cf-update-instances 2 メモリ割り当て変更 grails cf-stats grails cf-update-memory 1G ログの確認 grails cf-logs アプリケーションの起動・停止・再起動 grails prod cf-start grails prod cf-stop grails prod cf-restart リモートファイル確認 grails cf-list-files/ grails cf-get-file logs/stderr.log アプリケーションの削除 grails cf-delete-app 全アプリケーションの削除 grails cf-delete-all-apps データのインポート cf-tunnel
https://w.atwiki.jp/kenichiro/pages/42.html
RubyでDirichlet Rank タブ区切りでリンク先を表すファイルのDirichletRankを計算する。 @muはRandomSurferの確率を としたときのである。 # DirichletRankを用いたRankの計算プログラム。 # make_matrixではリンク間のマルコフ連鎖を作成。 # update_rankでRandomSurferを含めて計算している。 class DirichletRank def initialize @mu = 1.0 @p_surf = Array.new @word = Hash.new # word list @all_num = Hash.new # word number File.open(ARGV[0]){|file| i = 0 while text = file.gets do text = text.chomp!.split("\t") key = text.shift @word[key] = text @all_num[key] = i i += 1 end } @rank = Array.new # word s rank @rank.fill(1.0, 0, @word.length) # Rankの初期化 @random_surfer = 1.0/@word.length end def main make_matrix 30.times{update_rank} end def make_matrix @word_matrix = Array.new(@word.length) @probability = Array.new @word.each do |key, v| s = v.size key_no = @all_num[key] if s == 0 then @probability[key_no] = 0 next end # DirichletRankでの重み付け @probability[key_no] = (1.0 - (@mu / (s + @mu)))*(1.0/s) v.each do |word| word_no = @all_num[word] @word_matrix[word_no] = Array.new if @word_matrix[word_no] == nil @word_matrix[word_no].push key_no end end end def update_rank i = 0 new_rank = Array.new link_all = 0.0 @word_matrix.each do |no| sum = 0.0 unless no == nil then no.each do |v| sum += (@probability[v] * @rank[v]) end end new_rank[i] = sum # make rank i += 1 end @word.each do |k, v| no = @all_num[k] link_all += (@mu/(v.size + @mu))*@rank[no]*@random_surfer end new_rank.collect!{|i| i += link_all } @rank = new_rank # update rank end def print_matrix @word.each do |key, v| print key, "\t" end print "\n" @word.each do |key, v| key_no = @all_num[key] print @rank[key_no], "\t" end print "\n" end end a = DirichletRank.new a.main a.print_matrix