Көбірек

SQL -ден LONG RAW (SDEBINARY) сұрау/түрлендіру мүмкін бе?

SQL -ден LONG RAW (SDEBINARY) сұрау/түрлендіру мүмкін бе?


Қазіргі уақытта бізде ArcSDE 9.3/Oracle10 және қабаттар SDEBINARY -де бар.

Сұрауларды SDE.ST_GEOMETRY немесе SDO_GEOMETRY командаларымен жасауға болады ма?


ST_GEOMETRY және SDO_GEOMETRY көмегімен деректермен жұмыс істеу үшін ArcGIS Desktop -тан басқа SQL -ді қолдануға болады. SQL -де көптеген сақтық шараларын қолдану қажет (құжаттарды оқыңыз).

Sde_binary файлынан жоғарыдағылардың біріне көшу үшін барлық деректерді дерекқорға қайта жүктеу керек.

Жадты көшіру (деректерді басқару)


Оқылатын, сақталатын және жылдам sql сұраулары үшін көп жолды жолдарды қалай құруға болады?

Менде бірнеше SQL командалары бар, мен оларды кодта алудың ең жақсы әдісін анықтауға тырысамын, осылайша:
1. Олар өте жақсы оқылады
2. Оларды жаңарту оңай болар еді
3. Көптеген конструкцияларға байланысты олар өнімділікке қосымша шығын болмайды.

Менде келесідей нәрсе бар, ол өте жақсы болмады.

Әр жолдың соңындағы « n» таңбалары отладтау мақсатында жақсы басып шығаруды қамтамасыз етеді.

Кейінірек пайдаланушы «?» Орнын толтыратын PreparedStatement. sql инъекциясының алдын алады:

Тағы бір балама - SQL String файлдан оқу мұны Properties класы арқылы жасауға болады. Мұндай файлда бірнеше қасиеттер болуы мүмкін, олардың әрқайсысы басқа SQL сұранысы немесе қалаған конфигурация мәндерінің басқа түрлері.

Үлгі файл («» - бұл қасиеттің көп жолды мәніне рұқсат ету, бірақ ол бір жол ретінде оқылады)

Қандай жүктеуге болады:

Содан кейін PreparedStatement пайдаланыңыз.

Бонустық ұсыныс:

Сіз жиі жасайтын қосылулар арқылы көріністер жасаңыз, сондықтан сұраулар кодта немесе мүліктік файлдарда қарапайым болып көрінеді, мысалы:


2 Patstat пісіру кітабы

Patstat мәліметтер қоры реляциялық деректер қорының схемасына сәйкес келетін кестелер жиынтығынан тұрады, онда кестелерді бір -біріне тиісті енгізу кілті арқылы қосуға болады. 3 3 Патенттік өтінімдердің идентификаторы (appln_id) кестелерді бір -бірімен байланыстыру үшін жиі қолданылады. Кестелер мен өрістердің толық сипаттамасы Patstat DVD дискілерінде бар Деректер каталогында берілген және оны EPO веб -сайтынан жүктеуге болады.
Белгіленген патенттік өтінімдер кестесі tls201_appln, 74 миллионнан астам жазбаларды қамтиды және 1 -суретте көрсетілгендей Патстаттың негізгі элементі болып табылады. Басқа кестелерде патентке өтінімдердің әрқайсысы туралы ақпарат бар, мысалы, өнертапқыштар мен өтінім берушілер, технологиялық өрістер, тақырыптар мен рефераттар, жарияланымдар мен дәйексөздер .

Ескерту: Барлық кестелер есепке алынбайды.

Дереккөз: Еуропалық патенттік бюро, Patstat мәліметтер базасы, сәуір 2013 ж.

Деректерді алу көлемін шектеу үшін біз 2005 жылы әлемнің кез келген жерінде берілген жел-турбиналық технологияларға қатысты өнертабыстарды сипаттайтын патенттік өтінімдердің үлгісі бойынша өз сұраныстарымызды орындаймыз. Жел қондырғыларының технологиясына қатысты патенттік өтінімдер негізінен Халықаралық патенттік жіктеудің (IPC) F03D (Subarić және т.б. 2011) қосалқы сыныбында кездеседі. патенттерге қатысты. Барлық патенттерде IPC кодтары жоқ екенін ескеріңіз. Жел энергиясының патенттерін Y02E10/70 кооперативті патенттік жіктеу (CPC) коды арқылы да анықтауға болады. кесте tls224_appln_cpc. CPC - USPTO мен EPO арасындағы бірлескен жіктеу жүйесі.
Бұл қосалқы класс F03D-ден басталатын барлық IPC кодтарын қамтиды, мысалы: 'F03D 1/00' (айналу осі жел қозғалтқыштары) және 'F03D 5/02' (жел тартатын бөлшектер шексіз тізбектерге бекітілген немесе сияқты).

2.1 Технологиялар саласы бойынша патенттерді анықтау

Біз кестедегі жазбаларға сілтеме жасау үшін «қосымша» терминін қолданамыз tls201_appln. Бұл кестеде Patstat мәліметтер қорында бар барлық қосымшалар тізімделеді және оларға бірегей және тұрақты тағайындалады appln_idол патенттік органның (өтінім берілген патенттік ведомство), патенттің өтінімінің нөмірі мен өтінім түрінің коды (мысалы, өтінім патенттік өтінім, Патенттік кооперация туралы шарт болып табылатынын көрсететін) жиынтығынан құрылады. РСТ) қосымшасы немесе дизайн қосымшасы). Қолданба нөмірі қолданба идентификаторынан ерекшеленеді. Өтініш нөмірі - өтінім берілген патенттік орган берген нөмір, ал өтінім идентификаторы Patstat мәліметтер базасына тән. Соңғысы SQL жаргонында «бастапқы кілт» деп аталады. 1 -сұрауда appln_id кестені байланыстыру үшін қолданылады tls201_appln үстелмен tls209_appln_ipc, ол әр қосымшаға тағайындалған IPC кодтарын қамтиды.

Бірінші мәлімдеме үзінділер: бірегей қосымшаның идентификаторы (appln_id) патенттік өтінім беретін органның екі әріптен тұратын коды (appln_auth) патентке өтінім нөмірі (appln_nr) және қосымшаның түрі (appln_kind). Біз таңдаймыз патенттік өтінімдер көмегімен қосымшаларды таңдау арқылы appln_kind «А» (тікелей беру) немесе «W» коды (РСТ қосымшасы, 2.2 бөлімін қараңыз). SELECT DISTINCT сөйлемі, егер берілген патенттік өтінімде F03D -тен басталатын бірнеше IPC коды болса, нәтиже кестесінде қайталануды болдырмау үшін қолданылады. Сұрау патенттелген 2125 өтінімді қайтарады және оларды сұрыптайды appln_auth және appln_id. Алғашқы бес нәтиже иллюстрациялық мақсатта 1 -кестеде берілген. ORDER BY қолдану әдетте сұраныстарды баяулататынын және оларды болдырмауға болатынын ескеріңіз.

appln_id appln_auth appln_nr appln_kind
55286477 AP 200603687 A
55286499 AP 200603713 A
532990 AR P050100289 A
533082 AR P050100386 A
533175 AR P050100493 A

Екі әріптен тұратын код appln_auth 1 -кестедегі баған қабылдаушы кеңсеге сәйкес келеді: «AP» Африка аймақтық зияткерлік меншік ұйымына (ARIPO) және «AR» Аргентинаның Ұлттық өнеркәсіптік меншік институтына жатады. Кодтар Дүниежүзілік зияткерлік меншік бюросының (ДЗМҰ) ST.3 форматына сәйкес келеді. 5 Толық тізім үшін ДЗМҰ-ның «Мемлекеттердің, басқа да ұйымдар мен үкіметаралық ұйымдардың өкілдігі үшін екі әріптік кодтар бойынша ұсынылған стандартты» (ST.3 стандартын) қараңыз. ДЗМҰ веб -сайтында қол жетімді кодтар.
Патстатта кейбір кодтардың сәйкес келмеуі мүмкін (мысалы, егер өтініш беруші стандартты емес ел коды бар патенттік құжатты келтірсе).

Екінші мәлімдеме деп аталатын уақытша кестені (SQL тілінде «көрініс») жасайды біздің_мысал және бірінші мәлімдемеде анықталған жел-турбиналық технологияларға қатысты патенттер жиынтығын қамтиды. Көріністер сұрауларды кішірек және қарапайым бөліктерге бөлу үшін әсіресе пайдалы. Көріністер индекстерге ие бола алмайды, сондықтан олар шағын популяцияларға жақсы сәйкес келеді. MS SQL қолданушылары ORDER BY кілт сөзін бірінші сұраудан алып тастауы керек.

2.2 Патенттік кооперация туралы келісімге қосымшаларды анықтау

РСТ - патенттік құқық туралы халықаралық шарт, ол әр келісуші мемлекеттерде өнертабысты қорғау үшін патентке өтінім берудің бірыңғай тәртібін қамтамасыз етеді. РСТ бойынша берілген патенттік өтінім халықаралық өтінім немесе РСТ қосымшасы деп аталады. Бұл қосымшалар көбінесе жоғары нарықтық потенциалды ойлап табумен байланысты (ван Зеброук пен ван Поттельсберг де ла Поттери 2011) және оларды патент берушілер көбірек қолданады (Frietsch, Neuhäusler және Rothengatter 2013) .6 6 Патенттік құн мен РСТ арасындағы байланыс екенін ескеріңіз. мәртебесі априорлық анық емес. Гуэллек пен ван Поттельсберг де ла Поттери (2000) мен Рейциг (2004) атап өткендей, патент берушілер патенттің негізгі өнертабысының экономикалық табысына сенімді емес болуы мүмкін және РСТ жолын қосымша шешім қабылдау уақытын «сатып алу» үшін қолдана алады. Немесе, патентке негізделген өнертабыстың экономикалық табыстылығы өтінім берілген күні жақсы анықталуы мүмкін және РСТ жаһандық қорғауды мүмкіндігінше тезірек іздеу үшін қолданылады.
Зерттеушілер кейде оларды патенттеу қызметінің халықаралық өлшемін зерттеу үшін қолданады (мысалы, Allred және Park 2007 қараңыз). РСТ қолдану автоматты түрде жаһандық патенттік қорғауға әкелмейді. Оның орнына, патенттік өтінім берушілер ұлттық іздеу және/немесе сараптама процесін бастау арқылы патенттік қорғауды қалайтын әрбір юрисдикцияда патенттерге «өтініш» беруі керек. Бұл «ұлттық» патенттер ресми түрде РСТ қосымшаларының ұлттық фазалық кірісі деп аталады.

Патстатта халықаралық кезеңдегі РСТ қосымшаларын әр түрлі жолмен анықтауға болады. Олар анимамен байланысты appln_kind коды Кестеде 'W' tls201_appln және олар баспа патенттік органмен байланысты (publn_auth) кестеде 'WO' деп орнатылған tls211_pat_publn. «WO» екі әріптен тұратын код WIPO білдіреді. РСТ қосымшаларының ұлттық фазалық енгізілуін өріспен анықтауға болады internat_appln_id кестеде tls201_appln, сәйкес келеді appln_id РСТ қосымшасының (өріс internat_appln_id РСТ тапсырудан алынбаған қосымшалар үшін 0 мәніне орнатылады).

Төмендегі сұрауда Қытай Халық Республикасының зияткерлік меншік жөніндегі мемлекеттік кеңсесінде (SIPO) немесе Жапония патенттік кеңсесінде (JPO) ұлттық кезеңге енген және Дат патенттік және тауарлық кеңсесі (DKPTO) болған барлық РСТ қосымшалары көрсетілген. бастапқы РСТ қосымшасын қабылдаушы кеңсе (яғни өтініш беруші орган).

Мәлімдеме патенттерге негізделген біздің_мысал. Ол SIPO немесе JPO -да берілген барлық өтінімдерді таңдайды internat_appln_id -ға тең appln_id РСТ патенттеріне өтінімдер біздің_мысал олар ДКПТО -да ұсынылды. Алғашқы бес нәтиже (барлығы 15 ұлттық фазалық жазбаның ішінен) 2 кестеде берілген.

PCT_appln_id PCT_appln_auth PCT_appln_nr appln_kind appln_id_sf appln_auth_sf
15563101 DK 2005000031 W 8300709 CN
15563116 DK 2005000046 W 8300768 CN
15563118 DK 2005000048 W 8300756 CN
15563246 DK 2005000181 W 8306357 CN
15563258 DK 2005000193 W 39635652 JP

2.3 Басымдық мәртебесі туралы ақпарат алу

Патенттік өтінім - бұл өнертабысты қорғау үшін берілген алғашқы патенттік өтінім. 1883 жылғы Париж конвенциясына сәйкес, басқа елдерге қорғауды кеңейту мақсатында басқа юрисдикцияларда басым патент берілуі мүмкін. Келесі патенттер «екінші өтінімдер» деп аталады.

Патенттік құжаттардың басымдығы - маңызды ақпарат бөлігі. Біріншіден, 1 -сұрауда сипатталған патенттік өтінімдердің саны өнертабыстардың санына әкелуі мүмкін, себебі ол басымдылықты да, екінші өтінімді де араластырады. Бірегей өнертабыстарды санау тек бірінші кезектегі өтінімдерді ғана санайды. Патенттік отбасылар туралы қосымша ақпарат келесі бөлімде берілген.
де Рассенфоссе және т.б. (2013) «басымдық берілген құжаттардың бүкіләлемдік санының» егжей -тегжейін түсіндіріңіз. Егер патенттер ЭПО сияқты бір анықтамалық кеңседе есептелсе, қос санау мәселесі өткір бола бастайды. Бұл құбылыс дивизиондық (немесе ұқсас) қосымшалармен байланысты. Егер EPO -да бірінші кезектегі өтінім берілсе және ЭПО -да бөлімшелік өтінім берілсе, бұл бөлімдік өтінім бастапқы құжаттан артықшылықты талап етеді, сондықтан техникалық жағынан екінші өтінімге тең. Мұндай жағдайларды кесте арқылы анықтауға болады tls216_appln_contn.
Екіншіден, ықтимал іріктеуді болдырмау үшін, әсіресе патенттер бір анықтамалық кеңседе есептелгенде, патенттік құжаттың басымдылық мәртебесін білу қажет болуы мүмкін. de Rassenfosse, Schoen and Wastyn (2014) бір кабинеттік есеп патенттік өндіріс функцияларының біржақты эконометрикалық бағасын шығара алатынын түсіндіреді.9 9 Патенттік өндірістік функциялар эконометрикалық зерттеулерде экономикалық бірлік шығаратын патенттер санының детерминанттарын талдау үшін қолданылады. фирма немесе ел сияқты.
Олар патенттік өтінімнің басымдық мәртебесі негізінде іріктеудің бұрмалануын анықтау үшін тест ұсынады.

Төмендегі сұрау біздің жиынтықтағы патенттік құжаттардың басымдылық мәртебесін қайтарады.

Бұл мәлімдеме әрқайсысын таңдайды appln_id бастап біздің_мысал деректер жиынтығы және оларға сәйкес келеді appln_id кестеде берілген tls204_appln_prior, ол екінші құжаттарда талап етілетін басым патенттерді тізімдейді. Анықтама бойынша, басымдықты талап етпейтін барлық патенттік өтінімдер басымдылық болып табылады. Сондықтан, баған белгіленген is_a_pf сәйкестік табылмаса 1 мәнін қабылдайды. Есіңізде болсын, алдыңғы сұраулардан айырмашылығы, кестелер LEFT OUTER JOIN операторының көмегімен біріктірілген. Бұл түйін сол жақ кестеден (t1) барлық жолдарды қайтарады және сәйкестік болған кезде оң жақтағы кестеден (t2) ақпаратты қосады. Екінші өтінім кестеде бірнеше артықшылықты талап етуге құқылы екенін ескеріңіз tls204_appln демек, DISTINCT тармағын қолдану. 3 -сұрауда бастапқыда анықталған 2125 патенттік өтінімнің 957 -сі басым болып табылады біздің_мысал. Алғашқы бес жазба иллюстрациялық мақсатта 3 -кестеде берілген.

2.4 Патент-отбасы мөлшерін есептеу

Патенттік отбасы - бұл бір немесе бірнеше ортақ басымдық беру арқылы бір -бірімен байланысты патенттік өтінімдер тобы. Путнамнан кейін (1996 ж.) Зерттеушілер патенттік отбасы туралы ақпаратты патенттік құндылықтың сенімді өкілі ретінде пайдаланады. Бұл көзқарастың дұрыстығын Хархофф, Шерер және Вопел (2003) анықтады, олар патент иеленушілер арасында жүргізілген сауалнаманың нәтижесі бойынша патенттік құқықтардың құнын бағалаумен байланысты екенін көрсетеді. Отбасы мөлшері - бұл халықаралық салыстырмалы баға өлшемі, сондықтан ол әр түрлі юрисдикцияларда берілген патенттік өтінімдерге негізделген зерттеулер үшін өте қолайлы.

Келесі сұрау қосымшалармен байланысты патент-отбасы мөлшерін есептейді біздің_мысал. Біз «кеңейтілген» отбасы анықтамасын қабылдаймыз (Халықаралық патенттік құжаттама орталығы (INPADOC)), онда басымдық беру арқылы тікелей немесе жанама байланысқан барлық қосымшалар жазылады. Балама тәсіл кестеде берілген DOCDB тобын қолдануды қамтиды tls218_docdb_fam. Патенттік отбасылардың әр түрлі анықтамалары (және, демек, өлшеу әдістері) бар және жақсы шолу ЭЫДҰ (2009) мен Мартинесте (2011) ұсынылған.

Назар аударыңыз, Query 4 қоңыраулар кестесі tls219_inpadoc_fam бүркеншік аттармен екі рет t2 және t3: t2 әрқайсысына сілтеме жасайды appln_id бастап біздің_мысал патенттік-отбасы идентификаторына inpadoc_family_id және өз кезегінде байланысты t3 барлық отбасы мүшелерін алу және санау үшін (t3.appln_id) осыған жатады inpadoc_family_id. Алғашқы бес жол 4 кестеде берілген.

Зерттеушілерді кейде отбасы қамтитын юрисдикциялардың саны қызықтырады. Мысалы, ЭЫДҰ үш патенттелген отбасылар бойынша индикатор шығарады, ол АҚШ патенттік және тауарлық белгілер жөніндегі басқармасы (USPTO) берген және сол өнертабыстар жиынтығын қорғау үшін EPO мен JPO -ға берілген патенттерді алады (Дернис пен Хан 2004). de Rassenfosse және van Pottelsberghe de la Potterie (2009) триадалық патенттер елдердің зерттеу өнімділігінің жақсы көрсеткіші болып табылатынын көрсетеді (барлық елдер бойынша патентке бейімділіктің өзгеруіне әсер ететін басымдығы бар құжаттармен салыстырғанда). Патстаттағы триадалық патенттерді қалай анықтау керектігі туралы ақпарат 1-қосымшада берілген. Отбасыға негізделген тағы бір көрсеткіш отбасында анықталған юрисдикция санын санау арқылы алынады-біз мұны «географиялық» отбасы саны деп атаймыз (сонымен қатар Squicciarini, Dernis қараңыз) және Крискуоло 2013). 5 -сұрауда көрсетілгендей 4 -сұрауды географиялық отбасының өлшемін өлшеуге оңай бейімдеуге болады.

4 -сұраумен салыстырғанда 5 -сұрау қосымша кестедегі ақпаратты пайдаланады, tls211_pat_publn, INPADOC отбасы мүшелерінің барлығының патенттік кеңселері (жариялау органдары) туралы ақпаратты қалпына келтіру және РСТ жариялау органын (WO) алып тастау, өйткені ол халықаралық қамтуға ие. бірлікке санау. Мысалы, егер JPO РСТ қосымшасын қабылдайтын кеңсе болса, онда ол JPO -да ұлттық кезеңге кіреді, тек халықаралық кезеңде РСТ қосымшасын қоспағанда, отбасы мөлшері 1 емес, 2 -ге тең болады.
Алғашқы бес нәтиже 5 -кестеде берілген. 4 -кестеде келтірілген нәтижелермен салыстыру отбасы мөлшерінің екі өлшемі арасында үлкен айырмашылықтар болуы мүмкін екенін көрсетеді. Мысалы, отбасы байланысты болса appln_id 65303 саны тоғыз мүшеден тұрады, ол тек төрт юрисдикцияны қамтиды: Германия, Еуропалық патенттік конвенцияның мүшелері (ЭПО арқылы), АҚШ пен Қытай. Отбасы санының географиялық отбасы мөлшерінен өзгеше болуының әр түрлі себептері бар, мысалы, процедуралық себептер (өнертабысқа қойылатын талаптардың бірлігі немесе тәуелсіз талаптардың максималды саны) және патенттік стратегияның себептері (мысалы, патенттік шоқты құру).

Назар аударыңыз, 5 -сұрау әр түрлі елдердің саны емес, әр түрлі патенттік кеңселердің санын көрсетеді. Бұл айырмашылық көптеген юрисдикцияларды қамтитын ARIPO немесе EPO сияқты аймақтық кеңселерге патенттер берілген кезде маңызды. Аймақтық кеңсе берген патенттер патенттік қорғау сұралатын мүше мемлекеттердің әрқайсысында тексерілуі керек. Нәтижесінде, EPO -дағы патенттік өтінім іс жүзінде шамамен 500 миллион адамнан тұратын нарықты қамтыса, оның нақты қамтылуы патент расталған елдерге байланысты әлдеқайда аз болуы мүмкін. Мәселені шешудің бір әдісі - қаралған аймақтық кеңседе патент берілгеннен кейін аймақтық өтінімдер тексерілген юрисдикциялар саны туралы ақпаратты қосуды қамтиды. Мұны Патстатпен жасауға болады, бірақ біз бұл мақаланың көлемінен асып кеткендіктен оны талқыламаймыз. 11 11 Қысқаша айтқанда, EPO патенттеріне көзқарас Патстаттан басқа INPADOC құқықтық мәртебе дерекқорын қолдану және сәйкес құқықтық мәртебені анықтау болар еді. белгіленген күйде тексеруді немесе жаңартуды төлеуді көрсететін кодтар. INPADOC мәліметтер базасы 1-қосымшада түсіндірілгендей, Patstat үшін қосымша кесте ретінде қол жетімді.
Сондай -ақ, тізімделген патенттерге назар аударыңыз біздің_мысал бір отбасына тиесілі болуы мүмкін және қос санауды бақылау үшін одан әрі біріктіру қарастырылуы мүмкін.

2.5 Елдер бойынша патенттерді санау

Патенттік мәліметтер өнертапқыштар мен өтінім берушілер туралы ақпарат береді, осылайша технология өндірісінің құрылымы туралы бай ақпарат көзі болып табылады. Қысқаша айтқанда, өнертапқыштың резиденттік елі өнертабыстардың шыққан елін көрсетеді, ал өтініш беруші резиденттік елде өнертабысқа меншік құқығын көрсетеді.ЭЫДҰ (2009) патенттік есептеулерді құру үшін сілтеме жасайтын елді таңдау туралы жан -жақты талқылауды ұсынады. Нақты аналитикалық талаптарға жауап ретінде санаудың екі түрлі әдісін қолдануға болады: қарапайым қарсы әдіс бөлшек санау әдісі. Патенттік өтінімдердің көп саны топтық жұмыстың арқасында болғандықтан, бір немесе бірнеше елде орналасқан қорғалған өнертабысқа бір емес, бірнеше өнертапқыш үлес қосқан болуы мүмкін. Сол сияқты, бірнеше өтініш берушілер бірегей патентке ие бола алады. Бөлшек санау процедурасы әр елдің үлесін жақсы көрсету үшін және әр елде бір патентті бірнеше рет санауды болдырмау үшін қолданылады.

Өнертапқыштар (өтінім берушілер) тізімін екі қосымша кестенің көмегімен анықтауға болады: tls207_pers_appln патенттік өтінім мен өнертапқыштар (өтініш берушілер) арасындағы сәйкестікті тізімдейді және tls206_ адам атаулары мен мекен -жайлары туралы толық мәлімет береді. The person_id идентификатор осы екі кесте арасындағы байланысты орнатуға мүмкіндік береді. Назар аударыңыз, барлық патенттік құжаттар тізімде жоқ tls201_appln кіруі бар tls207_pers_appln.

Төмендегі сұрау патентке өтінім беру үшін өнертапқыштардың резиденттік елінің бөлшек санауын орындайды біздің_мысал. Өнертапқыштардың өрісі бар invt_seq_nr кестеде 0 -ден жоғары tls207_pers_appln, ал үміткерлерде өріс бар applt_seq_nr 0 -ден үлкен.

Жоғарыда көрсетілген сценарий алдыңғы сценарийлерге қарағанда жетілдірілген, себебі ол ел бойынша бөлшек санауды жеңілдету үшін делдалдық есептеулерді қамтамасыз ететін енгізілген сұраулардан тұрады. (VIEWS көмегімен оны кішігірім мәлімдемелерге бөлуге болады.) Елдер бойынша жиынтық есептеулер өрістерді таңдау бойынша орындалады біздің елмен_мысалымыз) көмегімен шығарылады біздің_мысал кесте және екі қосымша сұрау. Ішкі сұрау t1 елдер бойынша және патенттер мен қосымша сұраулар бойынша өнертапқыштардың саны туралы хабарлайды t2 патент бойынша өнертапқыштардың жалпы саны туралы хабарлайды. Шығу t1 және t2 Содан кейін патенттермен байланыстырылады біздің_мысал жоғалған жазбаларды есепке алу үшін LEFT OUTER JOIN мәлімдемесін қолдану арқылы tls207_pers_appln үстел MySQL функциясы 'ifnull ()' жетіспейтін жазбаларды бос жазбамен алмастырады және жазбалар жоқ жерде санауды 1 -ге орнатады (себебі appln_id кестеде табылған жоқ tls207_pers_appln немесе жоқ болғандықтан person_id үшін анықталды invt_seq_nr 0 -ден үлкен). MS SQL пайдаланушылары оның орнына 'isnull ()' функциясын қолдануы керек. Олар сондай -ақ сұрауда (CONVERT (float, COUNT (b.person_id)) AS tot_in_ctry) пайдалану арқылы соңғы санау өзгермелі болуы керек екенін көрсетуі керек. t1. Өрісті таңдау нәтижелерін алдын ала қарау (біздің елмен_мысалымыз) және соңғы есеп сәйкесінше 6 және 7 -кестеде берілген.

appln_id person_ctry_code tot_in_ctry tot_in_patent
263066 DE 2 2
273390 CH 1 4
273390 DE 3 4
273768 JP 1 1
273769 JP 1 1

Ескерту

  • (а) 609,5 көрсеткіші ел коды жоқ өнертапқыштардың жалпы үлесін білдіреді.

6 -кестеде барлық өнертапқыштар көрсетілген appln_id 263066 - неміс. Керісінше, өнертапқыштардың төрттен бірі appln_id 273390-Швейцария, ал төрттен үш бөлігі-неміс. Барлық акцияларды топтастыру person_ctry_code 7 -кестеде көрсетілген нәтижелерге әкеледі біздің_мысал, 609,5 бір елге бөлінбеді және 357,2 патент неміс өнертапқыштарына тиесілі болды. Жоғалған ел кодтарын қалпына келтіру әдістемесі де Rassenfosse et al. (2013).

6 -сұрауды өтініш берушінің тұрғылықты еліне бейімдеу оңай applt_seq_nr орнына өріс invt_seq_nr жылы tls207_pers_appln). Өтініш беруші мен өнертапқыш туралы мәліметтер Патстатта берілген және олар арқылы байланысқанын атап өткен жөн tls207_pers_appln кесте қосымшамен байланысты соңғы басылымда бар ақпаратқа сәйкес келеді. Мысалы, егер EP-B1 басылымында түпнұсқа EP-A1 басылымына әр түрлі өтінім берушілердің есімдері болса, онда тек В1 басылымы үшін тек адам туралы ақпарат қол жетімді болады. «A1» түрінің коды еуропалық іздеу есебімен шығарылатын еуропалық патенттік өтінімді білдіреді, ал «B1» - берілген еуропалық патентті білдіреді.
Ағымдағы ақпаратты қалпына келтіру үшін 2.9 -бөлімде түсіндірілгендей, Patstat деректерін ұлттық патенттік ведомстволар ұсынған мәліметтермен байланыстыруға болады.

2.6 Халықаралық ынтымақтастық нәтижесінде патенттерді анықтау

Өтініш берушілер мен өнертапқыштар туралы ақпарат басқа мәселелермен қатар ғылыми -зерттеу саласындағы халықаралық ынтымақтастықты (Guellec және van Pottelsberghe de la Potterie 2001 Picci 2010 Danguy 2014), ҒЗТКЖ (Томсон 2013) немесе өнертапқыштар желісін (Balconi, Breschi және т.б. Лиссони 2004 Эжермо мен Карлссон 2006). Біздің білуімізше, шектеулі зерттеулер ғана осы көрсеткіштердің дұрыстығын бағалайды. Осындай зерттеулердің бірі - Бергек пен Брузелиус (2010), бұл ҒЗТКЖ ынтымақтастығын өлшеу үшін өнертапқыштардың деректерін қолдануға күмән тудырады.

Халықаралық ынтымақтастық нәтижесінде алынған патенттерді анықтайтын сұраудың мысалы төменде келтірілген, оның негіздемесі - бұл патенттік өтінімдер. nb_locations әр түрлі елдерде тұратын және халықаралық ынтымақтастықтың нәтижесі болып табылатын өнертапқыштардың саны 1-ден жоғары.

7 -сұрау әр патенттік өтінімде көрсетілген әр түрлі өнертапқыш елдердің санын есептейді біздің_мысал. Ол оң халықаралық ынтымақтастық туралы жазбалардың болуына байланысты tls207_pers_appln кестеде немесе person_ctry_code кестедегі өріс tls206_ адам. Алғашқы бес нәтиже 8 -кестеде берілген.

2.7 Алынған дәйексөздерді санау

Carpenter, Narin and Woolf (1981) және Trajtenberg (1990) алғашқы еңбектерінен кейін дәйексөз деректері сапаның көрсеткіші ретінде пайдаланылады, ол кеңінен технологиялық еңбек сіңіру мен өнертабыстың экономикалық әлеуеті ретінде анықталады. Патент сапасының басқа көрсеткіштері бар екенін ескеріңіз: атап айтқанда Squicciarini, Dernis and Criscuolo (2013 ж.) Еңбектерін қараңыз. Деректер мәліметтері білім ағынын бақылау үшін жиі қолданылады (Джаффе, Трайтенберг пен Хендерсон 1993) және білімнің ескіру жылдамдығын өлшеу үшін (Кларк 1976 Джаффе және Трайтенберг 1996). Патенттік сілтеме деректері өте бай түсініктерді ұсынуы мүмкін болса да, оларды сақтықпен қолдану керек. Экономикалық индикатор ретінде келтірілген деректердің сәйкестігіне институционалды ортаның әсеріне мұқият назар аудару қажет. Атап айтқанда, патенттік дәйексөздер патенттік кеңселерде әр түрлі болады (Michel and Bettels 2001) және емтихан алушы келтірген дәйексөздер қосымша шуды қосуы мүмкін (USPTO дәлелдерін Alcácer and Gittelman 2006 қараңыз). Сонымен қатар, әр түрлі патенттеу органдарының көптеген басылымдарын келтіруге болады, бірақ бір өнертабысты қамтиды, бұл дәйексөз жазбаларының үзілуіне әкеледі, Webb et al. (2005).

Келесі сұрау EPO жариялаған патенттік өтінімдер бойынша Неміс патенттік және сауда белгісі бюросы жариялаған патенттік өтінімдер бойынша 3 жылдық терезеде алынған дәйексөздердің санын есептейді. Патент алған дәйексөздерді көбінесе «алға» сілтемелер деп атайды, бұл «артқа» сілтемелерге қарама -қарсы, бұл патентпен жасалған дәйексөздерді көрсетеді. Соңғысын кейде «сілтемелер» деп те атайды (ғылыми жұмыстың анықтамалық тізіміне ұқсас).

Дәйексөз жазбалары жарияланған патенттік құжаттарға негізделгенін ескеріңіз, сондықтан publn_auth үстелден tls211_pat_publn орнына appln_auth үстелден tls201_appln. Алаң publn_auth патенттік құжатты жариялау құқығын алады. Баспа органы көбінесе қабылдаушы кеңсе болып табылады (appln_auth), РСТ -ға өтінімдерді қоспағанда, жариялау органы ДЗМҰ болып табылады және алушы кеңсе патенттік өтінім іс жүзінде берілген патенттік ведомство болып табылады. Осылайша, (t2.publn_auth = 'DE') критерийіне балама болып табылады (t1.appln_auth = 'DE' ЖӘНЕ t1.appln_kind = 'A'). Деректерді қысқартпау үшін әр түрлі жастағы когорталардың патенттерімен жұмыс жасауда уақыттық терезені қолдану маңызды. Ол 'DATE_ADD ()' функциясымен оңай орындалады. MS SQL пайдаланушылары оның орнына (DATEDIFF (YEAR, t2.earliest_date, t4.publn_date) & lt = 3) қолдануы керек. Дәйексөздің артта қалуын жақсырақ бағалау үшін сілтеме күні келтірілген патент жарияланған алғашқы күнге белгіленеді. Ескерту жоғарыда түсіндірілген себептер бойынша, сондай -ақ EPO дәйексөзінің түрін ескермегендіктен, өте қарапайым. Вебб және басқаларды қараңыз. (2005, 8 -бет) ЭПО -да дәйексөздердің түрлеріне шолу жасау үшін. Алғашқы бес нәтиже 9 кестеде келтірілген.

2.8 Гранттық ақпарат алу

Жарияланған патенттік өтінім оның иесіне заңды құқықтар мен кейбір экономикалық артықшылықтар береді (мысалы, Guellec, Martínez and Zuniga 2012 қараңыз), бірақ патент құнының көп бөлігі патент берілгенде және иесі оның айрықша құқығын қолдана алатын кезде қол жеткізіледі. дұрыс Грант мәртебесі маңызды экономикалық айнымалы болып табылады. 9 -сұрау патенттік өтінімдердің бар -жоқтығы туралы ақпаратты қалай қалпына келтіру керектігін көрсетеді біздің_мысал Ұлыбританияның зияткерлік меншік басқармасына (UKIPO) берілген құжаттар қабылданды.

Сұрау кестедегі ақпаратты пайдаланады tls211_pat_publn. Әрбір өтінім бір немесе бірнеше жарияланған құжаттармен байланысты және әр жарияланған құжат жарияланым түрін көрсету үшін офистің арнайы жарияланымының кодымен белгіленеді. Patstat тобы берілген құжаттармен байланысты жарияланымның кодтарын анықтады және грантқа сәйкес келетін өтінімнің алғашқы құжатына 1 мәні беріледі. publn_first_grant. Барлық басқа құжаттарға 0 мәні беріледі. Патентке өтінім берілгенін анықтаудың қарапайым әдісі - өрістің максималды мәнін таңдау. publn_first_grant әрқайсысы үшін appln_id. Егер максималды мән 1 болса, патент берілді. 0 мәнімен байланысты патенттік өтінімнің мәртебесі түсініксіз. Құқықтық мәртебенің басқа түрлеріне мыналар жатады, бірақ олармен шектелмейді: күтілуде, алынып тасталды және бас тартылды. Құқықтық мәртебе туралы толық ақпаратты кестеден алуға болады tls221_inpadoc_prs кейбір патенттік ведомстволар үшін (толығырақ 1 -қосымшаны қараңыз). Басқа кеңселер үшін 2.9 -бөлімде түсіндірілгендей, Patstat деректерін ұлттық патенттік ведомстволар ұсынған мәліметтермен байланыстыру қажет. РСТ қосымшалары ешқашан өздігінен берілмейтінін ескеріңіз: тек ұлттық кезеңге енген қосымшалар ғана берілуі мүмкін. Алғашқы бес нәтиже 10 -кестеде берілген.

2.9 Патстатты ұлттық патенттік ведомстволар ұсынатын мәліметтермен байланыстыру

Кейде Patstat деректерін ұлттық патенттік ведомстволар тікелей беретін мәліметтермен байыту қажет, мысалы, патенттік өтінімдердің құқықтық мәртебесі туралы нақты ақпарат алу немесе қайта тағайындау туралы ақпарат жинау. Мұны өрістен алынған ақпаратты қолдану арқылы жасауға болады publn_nr кестеде tls211_pat_publn. Басылым нөмірін қайта құру әрбір патенттік кеңсеге тән және 10 -сұрау UKIPO -ның қарапайым мысалына назар аударады.

UKIPO (Ipsum) онлайн патенттік құжаты мен ақпараттық қызметі жариялау нөмірінің келесі форматта болуын талап етеді: 'GBnnnnnnn', яғни жеті цифрдан тұратын 'GB' таңбалары. 10 -сұрау өрістің соңғы жеті цифрының алдына 'ГБ' таңбаларын қосады publn_nr UKIPO онлайн қызметімен үйлесімді басылым нөмірін қайта құрастыру үшін. MS SQL пайдаланушылары SELECT DISTINCT тармағының соңғы элементін ((‘GB’ + RIGHT (t2.publn_nr, 7)) AS publn_nr_ukipo) ауыстыруы қажет. Құжаттарды алып тастауға назар аударыңыз publn_kind «D0» коды, ол UKIPO үшін берілген патенттік өтінімдерге сәйкес келеді. Алаң publn_nr_ukipo енді UKIPO веб -сайтында қосымша ақпаратты іздеу үшін пайдалануға болады. Жалпы алғанда, Patstat форматын ұлттық патенттік бюрода қолдануға болатын пішімге өзгерту қажет. Алғашқы бес нәтиже 11 -кестеде келтірілген.

appln_id publn_nr_patstat publn_nr_ukipo
21465239 2410379 GB2410379
21467768 2423650 GB2423650
21470294 2441770 GB2441770
21471154 2424926 GB2424926
21471862 2425334 GB2425334

Сценарий синтаксисі

HDFToArcGISRasterArcGISTable_GeoEco (үстел, inputFileField, outputRasterField, sdsName, xLowerLeftCorner, yLowerLeftCorner, cellSize, nodataValue, транспозиция, айна, флип, swapHemispheres, coordinateSystem, projectedCoordinateSystem, geographicTransformation, resamplingTechnique, projectedCellSize, registrationPoint, clippingRectangle, mapAlgebraExpression, buildPyramids, orderBy, бағыттары, skipExisting, basePath)

HDF кіріс файлдарының жолдарын қамтитын өріс.

Бұл құрал жазылған кезде HDF-тің екі негізгі нұсқасы үздіксіз дамуда: 4.2r1 шығарылымындағы HDF және 5-1.6.5 шығарылымындағы HDF5. Бұл құрал HDF5 файлдарын өңдей алады, бірақ HDF5 файлдарын өңдей алмайды. Ол сондай-ақ HDF-EOS, HDF-мамандандырылған нұсқасын өңдей алады, бірақ HDF5-EOS емес.

HDF форматтары туралы қосымша ақпарат алу үшін http://www.hdfgroup.org қараңыз.

Егер сіз қысылған файлдарды қолдау көрсетілетін қысу форматында берсеңіз, олар автоматты түрде ашылады. Егер файлдар мұрағат форматында қысылған болса (мысалы .zip немесе .tar), әр мұрағатта дәл бір файл болуы керек, ол ішкі каталогта болмауы керек.

Жасалатын шығыс растрлары бар өріс.

HDF файлындағы ғылыми деректер жиынтығының (SDS) атауы.

Егер сіз SDS атауын білмесеңіз, ең жақсы болжамды көрсетіңіз. Егер SDS бұл атпен болмаса, ValueError пайда болады. Қате туралы хабар кіріс файлында бар барлық SDSes атауларын тізімдейді. Осы атаулардың бірін таңдап, қайталап көріңіз.

HDF тақырыбын мәтіндік файлға шығару үшін HDF тақырыбын шығару құралын пайдалануға болады. Бұл файлда әрбір SDS «айнымалы» деп аталады. Файлды «Айнымалы атаудың шексіздігі» (INF) немесе «сан емес» (NAN) мәндері бойынша іздеу арқылы олардың аттарын таба аласыз. Егер бұл мәндер табылса, ValueError көтеріледі.

ArcGIS растрлық форматы 32 биттік өзгермелі деректер түрін қолдайды, бірақ 64 биттік қос деректер түрін қолдамайды. Егер сіз қосарланған деректер түрімен SDS жеткізетін болсаңыз, ол ArcGIS ASCII-Raster геоөңдеу құралы арқылы 32 биттік өзгермелі растрға айналады. Бұл жағдайда құралдың әрекеті құжатталмаған. ArcGIS 9.1 -де келесідей көрінеді:

Көрсеткіші -38-тен +38-ге дейінгі диапазондағы мәндер 32 биттік өзгермелі растрда дұрыс көрсетілген, дегенмен 32 биттік өзгермелі деректер түрінің кіші мантиссаға байланысты кейбір дәлдік жоғалады.

Көрсеткіші -38 -ден төмен мәндер (мысалы, -39, -40 және т.б.) 0 -ге түрлендіріледі.

Көрсеткіші +38 -ден жоғары мәндер мәннің белгісіне байланысты -INF немесе +INF -ге түрлендіріледі (мысалы -5.3083635279597874e -212 -ArcCatalog GUI -де -1.#INF түрінде, ал 2.5502286890301497e +084 пайда болады) ретінде 1.#INF).

ArcGIS 9.1 ASCII to Raster құралы бүтін сандарды түрлендіру кезінде кейбір ерекшеліктерді көрсетеді:

8 -разрядты қол қойылған бүтін деректер үшін, -128 мәні пайда болса, құрал 16 биттік растр жасайды, егер -128 NODATA мәні тағайындалмаса. Басқа NODATA мәнін көрсету, мысалы, 0, әлі де 16 биттік растр береді, егер -128 пайда болса.

Сол сияқты, 16 биттік қол қойылған бүтін деректер үшін, егер NODATA мәні белгіленбесе, ASCII файлында -32768 мәні пайда болса, құрал 32 биттік растр жасайды.

Нашар, 32 биттік қол қойылған бүтін деректер үшін, егер NODATA мәні тағайындалмаса, -2147483648 мәні пайда болса, құрал қате туралы хабарлайды. Тіпті бейтаныс, -2147483647 мәні әрқашан NODATA -ға аударылады.

Бүкіл сандық деректердің барлық түрлері үшін, құрал NODATA мәнін көрсеткенде, деректер түрі үшін мүмкін болатын ең кіші мән болып табылмайтын әрекетті жасайды. Мысалы, егер деректер диапазоны 0-ден 255-ке дейін және 0-де NODATA мәні белгіленсе, құрал 8-разрядты белгісіз бүтін растрды шығарады. Бірақ егер 1 -ге NODATA мәні тағайындалса, ол 16 -разрядты растр шығарады, ал ArcCatalog Raster Dataset Properties астында NoData мәні -32768 екенін көрсетеді, бірақ Identify құралы 1 мәні бар ұяшықтарды көрсетеді, шын мәнінде NODATA. Ұқсас таңғажайып нәтижелерді NODATA мәнін тағайындаған кезде, басқа мәліметтер типінің бүтін сандық растерлері үшін алуға болады.

Растрдың төменгі сол жақ бұрышының X координаты.

Координат сол ұяшықтың ортасына емес, сол жақ төменгі ұяшыққа арналған. Мысалы, егер растр бүкіл Жердің географиялық проекциясы болса, онда сол жақ төменгі бұрыштың координаты -180,0 болады, ол Батыс 180 градус бойлыққа сәйкес келеді.

Y растрдың төменгі сол жақ бұрышының координаты.

Координат сол ұяшықтың ортасына емес, сол жақ төменгі ұяшыққа арналған. Мысалы, егер растр бүкіл Жердің географиялық проекциясы болса, сол жақ төменгі бұрыштың координаты Оңтүстік 90 градус ендікке сәйкес -90,0 болар еді.

Мысалы, егер растр 720 баған мен 360 жолдан тұратын бүкіл Жердің географиялық проекциясы болса, оның ұяшық өлшемі географиялық дәреженің 1/2 бөлігіне сәйкес келеді.

Мәліметтердің негізгі форматы ұяшықтардың төртбұрышты болуын талап етеді. Әр өлшем үшін ұяшық өлшемін көрсету мүмкін емес.

Ұяшықта деректер жоқ екенін көрсететін мән.

Егер «Ақиқат» болса, түрлендіру алдында кескін ауыстырылады (диагональ осіне айналады). Бұл опцияны шығыс/батыс осі солға және оңға емес, жоғары және төмен қарай орналасқан суретті түзету үшін қолданыңыз.

Егер «Ақиқат» болса, түрлендіру алдында кескін вертикаль оське айналады. Бұл опцияны «айнаның бейнесі» болып табылатын суретті түзету үшін қолданыңыз.

Егер «Ақиқат» болса, түрлендіру алдында кескін көлденең оське айналады. Төңкерілген суретті түзету үшін осы опцияны қолданыңыз.

Егер бұл рас болса, кескіннің шығыс және батыс жарты шарлары ауыстырылады. Бұл опцияны жаһандық кескіннің бағдарын Тынық мұхитында орналасқан 0 -ден 360 -қа дейін, Атлант мұхитында орналасқан -180 -тен +180 -ге дейін өзгертуге қолданыңыз.

Растр үшін анықталатын координат жүйесі.

Егер мән берілмесе, растрдың координат жүйесі анықталмаған күйінде қалады.

Растрды жобалауға арналған жаңа координат жүйесі.

Растрды бастапқы проекция анықталған жағдайда ғана жаңа координаталар жүйесіне проекциялауға болады. Егер бастапқы координат жүйесін анықтамай жаңа координат жүйесін көрсетсеңіз, қате пайда болады.

Проекцияны орындау үшін ArcGIS Project Raster құралы қолданылады. Бұл құралдың құжаттамасы жаңа координат жүйесі үшін ұяшық өлшемін көрсетуді ұсынады.

Мен белгілі бір координаттық жүйелер үшін ArcGIS 9.2 Project Raster құралы жобаланған растрды өте аз мөлшерде қысқартады.Мысалы, жаһандық MODIS Aqua 4 км хлорофилл кескінін геометриялық координаттарда Lambert_Azimuthal_Equal_Area -ге орталық меридианы -60 және шығу ендігі -63 болатын жобалау кезінде, алынған кескін планетаның төрттен бір бөлігін көрсетеді. Бұл мәселе Project Raster ArcGIS пайдаланушы интерфейсінен интерактивті түрде шақырылғанда болмайды, ол тек құралды бағдарламалық түрде шақырғанда пайда болады (геопроцессордың ProjectRaster_management әдісі). Сіз Project Raster -ді өзіңіз қолданған кезде оны көрмеуіңіз мүмкін, бірақ сіз географиялық өңдеу операцияларының бөлігі ретінде Project Raster шақыратын MGET құралдарын қолданған кезде орын алуы мүмкін.

Егер сіз бұл мәселеге тап болсаңыз, оны келесідей шеше аласыз:

Алдымен растрды бастапқы координаттар жүйесінде алу үшін жаңа координат жүйесін көрсетпей осы құралды іске қосыңыз.

ArcCatalog бағдарламасында растрды жаңа координат жүйесіне проекциялау үшін Project Raster құралын қолданыңыз. Бүкіл растрдың бар екенін, оның тым аз мөлшерде қиылмағанын тексеріңіз.

ArcCatalog бағдарламасында каталог ағашында тінтуірдің оң жақ түймешігімен шертіп, Қасиеттер тармағын таңдап, Кеңістікке жылжып, расталған растрдың көлемін іздеңіз.

Енді растрды шығаратын MGET құралын іске қоспас бұрын, Extent ортасы параметрін іздеген мәндерге орнатыңыз. Егер сіз MGET құралын ArcCatalog немесе ArcMap-тен интерактивті түрде шақырсаңыз, құралдың диалогтық терезесіндегі «Қоршаған орта» түймесін басыңыз, Жалпы параметрлерді ашыңыз, «Ашылу» ашылмалы мәзірін «Төменде көрсетілгендей» етіп өзгертіңіз және іздеген мәндерді теріңіз. Егер сіз оны геоөңдеу моделінен шақырсаңыз, модельдегі құралды тінтуірдің оң жақ түймешігімен нұқыңыз, Айнымалы етуді, Қоршаған ортадан, Жалпы параметрлерді, Кеңейтімді таңдаңыз. Бұл MGET құралына бекітілген үлгідегі Extent айнымалы ретінде орналастырады. Extent айнымалысын ашыңыз, оны «Төменде көрсетілгендей» етіп өзгертіңіз және іздеген мәндерді теріңіз. Егер сіз MGET құралын бағдарламалық түрде шақырсаңыз, сіз геопроцессордың Extent қасиетін іздеген мәндерге қоюыңыз керек. Бұл туралы және қоршаған орта параметрлері туралы қосымша ақпарат алу үшін ArcGIS құжаттамасын қараңыз.

MGET құралын іске қосыңыз. Растрдың ауқымы енді тиісті мөлшерде болуы керек.

Координаттардың бастапқы жүйесі мен жаңа координаталар жүйесін түрлендіру үшін қолданылатын түрлендіру әдісі.

Бұл параметр ArcGIS 9.2 енгізген жаңа опция. Бұл параметрді пайдалану үшін сізде ArcGIS 9.2 болуы керек.

Бұл параметр растрдың жаңа координат жүйесіне проекциялануы керектігін және жаңа жүйе бастапқы координат жүйесінен өзгеше деректерді қолданатынын көрсеткенде ғана қажет болады немесе трансформацияны қажет ететін екі координат жүйесі арасында басқа айырмашылық бар. Трансформация қажет екенін анықтау үшін мен келесі процедураны ұсынамын:

Алдымен растрды бастапқы координаттар жүйесінде алу үшін жаңа координат жүйесін көрсетпей осы құралды іске қосыңыз.

Әрі қарай, растрдағы ArcGIS 9.2 Project Raster құралын қолданып, оны қажетті координат жүйесіне проекциялаңыз. Егер географиялық трансформация қажет болса, бұл құрал сізге біреуін ұсынады. Сіз қолданған түрлендірудің нақты атауын жазыңыз.

Ақырында, егер трансформация қажет болса, дәл осы құралды енгізіңіз, оны қайта қосыңыз және растр қалағаныңызша проекцияланғанын тексеріңіз.

Қайта іріктеу алгоритмі бастапқы растрды жаңа координаттар жүйесіне жобалау үшін қолданылады. ArcGIS Project Raster құралы проекцияны орындау үшін қолданылады және келесі мәндерді қабылдайды:

ЖАҚЫН - жақын көршінің интерполяциясы

BILINEAR - екі жақты интерполяция

Жаңа координаттар жүйесіне жобалау үшін сіз осы алгоритмдердің бірін көрсетуіңіз керек. Алгоритмді таңдамай жаңа координат жүйесін көрсетсеңіз, қате пайда болады.

Жобаланатын координаттар жүйесінің ұяшық өлшемі. Бұл параметр міндетті емес болса да, ең жақсы нәтиже алу үшін ArcGIS құжаттамасы жаңа координат жүйесіне жобалау кезінде оны әрқашан көрсетуге кеңес береді.

Пиксельді туралау үшін қолданылатын x және y координаттары (шығыс кеңістігінде).

Бұл параметр ArcGIS 9.2 енгізген жаңа опция. Бұл параметрді пайдалану үшін сізде ArcGIS 9.2 болуы керек. Егер растрды жаңа координат жүйесіне проекциялау керектігін көрсетпесеңіз, ол еленбейді.

Растрды кесу керек төртбұрыш.

Егер жобаланатын координаталар жүйесі көрсетілсе, қиып алу проекциядан кейін орындалады және жаңа координаттар жүйесінде тіктөртбұрыштың координаттары көрсетілуі керек. Егер жобаланған координаталар жүйесі көрсетілмесе, координаттар бастапқы координаттар жүйесінде көрсетілуі керек.

Клипті жетілдіру үшін ArcGIS Clip құралы қолданылады. Кесетін тіктөртбұрыш бұл құралға бос орынмен бөлінген төрт саннан тұратын жол ретінде берілуі керек. ArcGIS пайдаланушы интерфейсі ArcGIS интерфейсінен бұл құралды шақырған кезде жолды автоматты түрде дұрыс пішімдейді, сізге формат туралы алаңдаудың қажеті жоқ. Бірақ оны бағдарламалық түрде шақырған кезде, дұрыс пішімделген жолды қамтамасыз етіңіз. Нөмірлер солға, астыңғы, оңға, жоғарыға реттелген. Мысалы, егер растр географиялық координат жүйесінде болса, оны 10 Вт, 15 S, 20 Е және 25 Н дейін қысқартуға болады:

Бүтін сандар немесе ондық сандар берілуі мүмкін.

Растрда орындалатын алгебра өрнегін салыстырыңыз.

ЕСКЕРТУ: ArcGIS Geoprocessing Model Builder бұл параметрдің мәнін кездейсоқ және үнсіз жоюы мүмкін. Бұл ArcGIS қатесі. Сақталған үлгіні іске қоспас бұрын, осы құралды ашып, параметр мәнінің әлі де бар екенін тексеріңіз.

Өрнек түрлендірілген растр жобаланғаннан және қиылғаннан кейін орындалады (егер бұл параметрлер көрсетілген болса). Кіріс алгебрасын орындағыңыз келетін растрды көрсету үшін регистрді енгізу регистрін регистрді пайдаланыңыз. Мысалы, растрды бүтін растрға түрлендіру және барлық ұяшықтарға 1 қосу үшін мына өрнекті қолданыңыз:

InputRaster жолы регистрді ескереді. Карта алгебра өрнегін орындамас бұрын, жол жасалатын растрды білдіретін уақытша растрға жолмен ауыстырылады. Соңғы өрнек 4000 таңбадан аспауы керек, әйтпесе ArcGIS қате туралы хабарлайды.

ArcGIS бір шығыс картасы алгебра құралы карта алгебра өрнегін орындау үшін қолданылады. Карта алгебрасын орындау үшін сізде ArcGIS Spatial Analyst кеңейтімі лицензиясы болуы керек.

Карта алгебра синтаксисі өте талғампаз болуы мүмкін. Бұл құралдың көмегімен табысқа жетуге көмектесетін бірнеше кеңестер:

Бұл құралды қолданар алдында ArcGIS бір шығыс картасы алгебра құралының көмегімен карта алгебра өрнегін құрыңыз және тексеріңіз. Содан кейін өрнекті осы құралға қойыңыз және оны бір шығыс картасы алгебрасында қолданылған тест мәнінен гөрі inputRaster айнымалы мәнін пайдалану үшін өңдеңіз.

Егер сіз өз өрнегіңізді осы құралда тікелей дамытсаңыз, өте қарапайым өрнектен бастаңыз. Оның дұрыс жұмыс істейтінін тексеріңіз, оған аздап қосыңыз және қайтадан тексеріңіз. Толық өрнекті құрастырғанша осы процедураны қайталаңыз.

Әрқашан бос орындарды қолдана отырып, математикалық операторларды растрлық жолдардан бөліңіз. Жоғарыдағы мысалда / операторының екі жағында бос орын бар. Осы үлгіні ұстаныңыз. Кейбір жағдайларда ArcGIS растрлық жолдарды бос орындарды пайдаланатын операторлардан бөлмейтін растрлық алгебра өрнектерін өңдей алмайды. Хабарланған қате туралы хабар, әдетте, бұл мәселе екенін көрсетпейді және оны бақылау өте көңілсіз болуы мүмкін.

Егер True болса, растр үшін пирамидалар салынады, бұл ArcGIS қолданушы интерфейсінде оның көрсету жылдамдығын жақсартады.

Жолдардың ішкі жиынын өңдеуге арналған SQL WHERE сөйлем өрнегі. Егер бұл параметр берілмесе, барлық жолдар өңделеді. Егер бұл параметр қамтамасыз етілсе, бірақ негізгі дерекқор WHERE тармақтарын қолдамаса, қате пайда болады.

Бұл өрнектің нақты синтаксисі базалық базаға байланысты. ESRI келесі синтаксисті қолдана отырып, сілтеме өрістерін ұсынады:

Егер сіз ArcInfo мұқабаларын, пішін файлдарын, INFO кестелерін немесе dBASE кестелерін (.dbf файлдары) сұрайтын болсаңыз, өрістің аттарын SQL өрнегіне қос тырнақшаға алыңыз: «MY_FIELD».

Егер сіз Microsoft Access кестелерін немесе жеке геодеректер кестесін сұрайтын болсаңыз, өріс атауларын төртбұрышты жақшаға алыңыз: [MY_FIELD].

Егер сіз ArcSDE геодеректер кестесін, ArcIMS мүмкіндіктер класын немесе ArcIMS кескін қызметінің қосалқы қабатын сұрайтын болсаңыз, өріс атауларын қоспаңыз: MY_FIELD.

Жолдарды сұрыптау үшін қолданылатын өрістер (яғни, SQL SELECT операторының ORDER BY тармағында көрсетілген бағандар). Егер өрістер берілмесе, жолдар негізгі дерекқор анықтайтын әдепкі ретпен сұрыпталады. Егер бұл параметр берілсе, бірақ бұл компьютерде ArcGIS 9.2 немесе одан кейінгі нұсқасы жұмыс істемесе немесе базалық база ORDER BY тармақтарын қолдамаса, қате пайда болады.

ORDER BY өрістерін көрсетуден басқа, әр өріс үшін сұрыптау бағытын да көрсету керек.

ORDER BY өрістері үшін сұрыптау бағыттарын көрсететін 'өсу' немесе 'кему' жолдарының тізімі. Егер бұл параметр берілсе, бірақ бұл компьютерде ArcGIS 9.2 немесе одан кейінгі нұсқасы жұмыс істемесе немесе базалық база ORDER BY тармақтарын қолдамаса, қате пайда болады.

Егер «True» болса, бұрыннан бар растерлер үшін өңдеу өткізіп жіберіледі.

Салыстырмалы жолдарға тәуелді болатын негізгі жол.

Егер базалық жол берілсе, ол кірістерді тізімдейтін өрістерден алынған кез келген салыстырмалы жолдарға алдын ала қосылады (және егер бұл құралдың шығысы болса). Егер негізгі жол берілмесе, оның орнына кесте бар жұмыс кеңістігі алдын ала қосылады.


Linux жүйесінде (нақты айтқанда, GNU coreutils ≥5.3):

GNU күнінің ескі нұсқаларында UTC дәуіріне қатысты айырмашылықты есептеуге болады:

Егер сізге портативтілік қажет болса, сіз сәттілікке жетесіз. POSIX қабық командасымен (есептеуді өзіңіз жасамай -ақ) форматтауға болатын жалғыз уақыт - ағымдағы уақыт. Іс жүзінде Perl жиі қол жетімді:

date -d @1190000000 1190000000 дегенді өз дәуіріңізбен алмастырыңыз

Егер сіздің дәуіріңіз секундпен емес, миллисекундпен болса, -d күніне өтпес бұрын соңғы үш цифрды алып тастаңыз:

Бұл қате деректерді береді. Соңғы үш цифрды алып тастаңыз.

(мұнда %F %T -strftime () түрінің форматы)

Бұл синтаксис ksh93 -тен алынған.

Алайда ksh93 -те дәлел әр түрлі және құжатталмаған форматтарға қолдау көрсетілетін күн өрнегі ретінде қабылданады.

Unix дәуірі үшін ksh93 синтаксисі:

ksh93 уақыт белдеуінің өзіндік алгоритмін қолданатын сияқты және ол қате жіберуі мүмкін. Мысалы, Ұлыбританияда бұл 1970 жылдың барлық мезгілі болды, бірақ:


SQL -ден LONG RAW (SDEBINARY) сұрау/түрлендіру мүмкін бе? - Географиялық ақпараттық жүйелер

CREATE USER, ALTER USER және SET PASSWORD мәлімдемелері енді әкімші көрсеткен нақты құпия сөздерді талап етудің орнына балама ретінде пайдаланушы тіркелгілері үшін кездейсоқ парольдерді құру мүмкіндігіне ие. Құпия сөзді басқару бөлімін қараңыз.

Құрастыру жазбалары

Сәйкес келмейтін өзгеріс: My_ulonglong түрі енді MySQL бастапқы кодында қолданылмайды. Осы түрді пайдаланған үшінші тарап коды оның орнына uint64_t C түрін қолдануы керек. Сондай -ақ, my_ulonglong айнымалы мәндерін басып шығару үшін printf () форматындағы жолдарды реттеу қажет болуы мүмкін. (Қате #29453827)

MySQL 8.0 құру үшін Protobuf ең аз талап етілетін нұсқасы 2.5 емес, 3.0 болады. (Қате #30141272)

Сервер құруға арналған Boost кітапханасының минималды нұсқасы қазір 1.70.0. (Қате #29639344)

Отладка кодын жазуға көмектесу үшін DBUG_TRACE макросы қол жетімді. Бұл кіру/шығу макростарының жұптарын алмастыратын ыңғайлылық. Мысалы, мынаны жазудың орнына:

Конфигурация жазбалары

CMake енді қолдануға мүмкіндік береді fastcov егер ол қол жетімді болса. fastcov қарағанда жылдамырақ lcov немесе gcov . Бұл үшін GCC және gcov 9 немесе одан жоғары нұсқалары. (Қате #30011512)

ӨШІРІЛДІ_ШОЛЫҚ CMake опция қолданылмады және жойылды. (Қате #29971049, Қате #96027)

The CMake Protobuf орындалатын файлдарын табу коды енді оларды бірнеше пакетке бөлетін платформаларда жұмыс істейді. (Қате #29953773)

Жаңа ADD_GDB_INDEX CMake опциясы екілік файлдарда .gdb_index бөлімін құруды қосу -қоспауды анықтайды, бұл оларды отладчикке жүктеуді тездетеді. Опция әдепкі бойынша өшірілген. Егер басқа сілтеме жасаушы болса, оның әсері болмайды lld немесе GNU алтын қолданылады. (Қате #29925009, Қате #95857)

INSTALL_LAYOUT үшін CMake опция, SLES және WIN опцияларының мәндері пайдаланылмады және жойылды. (Қате #29871520, Қате #95654)

Max_prepared_stmt_count жүйесінің айнымалы мәнінің максималды мәні 1 миллионнан (1,048,576) 4 миллионға (4,194,304) дейін ұлғайтылды. Әдепкі мән 16 382 -де өзгеріссіз қалады.

MySQL 8.0 енді wolfSSL көмегімен құрылысты қолдамайды. Барлық MySQL құрылымдары енді OpenSSL пайдаланады.

RE2 кітапханасы енді MySQL -де қолданылмайды. Кітапхана енді WITH_RE2 дереккөздерінің таралуымен біріктірілмейді CMake опция ескірген.

Қосылымды басқару туралы ескертулер

MySQL енді серверге қосылу арқылы жіберілетін байт санын азайту үшін қысуды қолдануды көбірек бақылауды қамтамасыз етеді. Бұрын берілген байланыс қысылмаған немесе zlib қысу алгоритмі қолданылған. Енді zstd алгоритмін (zstd 1.3) қолдануға және zstd қосылыстары үшін қысу деңгейін таңдауға болады. Рұқсат етілген сығымдау алгоритмдері сервер жағында, сонымен қатар клиенттік бағдарламалар арқылы қосылу үшін және қосалқы/қосалқы репликацияға немесе топтық репликацияға қатысатын серверлерге қосылу үшін конфигурациялануы мүмкін. Қосымша ақпарат алу үшін Қосылымды қысуды басқару бөлімін қараңыз.

Zstd алгоритмі арқылы қосылымды қысу серверді zstd кітапханасының қолдауымен құруды талап етеді. Жаңа WITH_ZSTD CMake опция жинақталған немесе жүйелік zstd кітапханасын пайдалану керектігін көрсетеді.

Бұрынғы қысуды басқару параметрлері, мысалы-клиент опциясы ескірген және болашақ MySQL нұсқасында жойылады.

Бұл жұмыстың бір бөлігі негізделген Facebook үшін рахмет.

Амортизация және жою туралы ескертулер

MySQL құпия сөзін көрсету үшін MYSQL_PWD орта айнымалысын пайдалану қауіпті деп саналады, себебі оның мәні басқа жүйелік пайдаланушыларға көрінуі мүмкін. MYSQL_PWD енді ескірген және болашақ MySQL нұсқасында жойылады.

Кілтке арналған жазбалар

MySQL Enterprise Edition енді HashiCorp Vault кілттерді сақтау үшін артқы жағы ретінде пайдаланатын keyring_hashicorp плагинін қамтиды. Қосымша ақпарат алу үшін MySQL кілттерін қараңыз.

Тіркеу жазбалары

Серверді іске қосу кезінде журналды буферлеу қате журналында шығудың пайда болуын азайту үшін түзетілді. (Қате #30019632)

Оңтайландырғыш жазбалары

Бірінші сәйкестендіру секіру операцияларына қатысты сұраулар итератор орындаушысында қате өңделді. Енді олар арамшөптерді жоюға қайта жазылады. (Қате #30220791)

Hash қосылымдары MySQL-те ішкі эквиваленттерді орындау әдісі ретінде енгізілді. Мысалы, осындай сұрауды осы шығарылымнан басталатын хэш -қосылым ретінде орындауға болады:

Эквивалентті пайдаланатын көп кестелі қосылыстар да осы оңтайландыруды пайдалана алады.

Хэш -қосылым орындалу үшін индексті қажет етпейді. Көп жағдайда хэшті біріктіру индекстерсіз эквиваленттер үшін бұрын қолданылған блок кірістірілген цикл алгоритміне қарағанда тиімдірек болады.

Әдепкі бойынша, осы шығарылымнан бастап, қосылудың құрамында кемінде бір эквивалентті шарт болған кезде хэш қосылуы қолданылады және қосылу шартына индекстер қолданылмайды. (Тек бір кестелік предикаттарға қолданылатын индекстер бар жерде хэшті қосуды әлі де қолдануға болады.) Бұл артықшылықты hash_join оптимизаторының қосқышын өшіру күйіне қою арқылы немесе NO_HASH_JOIN оптимизаторының кеңесін қолдану арқылы өзгертуге болады. Сонымен қатар, join_buffer_size параметрін орнату арқылы хэш -қосылуда қолданылатын жад көлемін басқаруға болады. Жад талабы осы сомадан асатын қосылым дискіде орындалады, дискідегі хэш қосылымы көптеген диск файлдарын пайдаланады және егер бұл сан open_files_limit шегінен асса орындалмайды.

Егер біріктірілген кестелердің кез келген жұбының қосылу шарттары пайдаланылатын барлық біріктіру шарттарының ішінде кемінде бір теңдікке қосылу шартын қамтымаса, хэшті қосуды қолдану мүмкін емес. Хэш қосылу болып табылады декарттық өнім үшін қолданылады, яғни қосылу шарттарын көрсетпейтін біріктіру.

EXPLAIN FORMAT = TREE немесе EXPLAIN ANALYZE нәтижесіндегі сұранысты оңтайландыру үшін хэш біріктіру қолданылғанын көруге болады.

Сонымен қатар, хэш біріктіруді қолдана отырып, ішкі қосылулар енді батырмалы кілттерге қол жеткізуді (BKA) пайдалана алады. Сыртқы қосылыстар әлі де біріктіру буферін бөледі.

Итераторға негізделген уақытты, бағаны және TREE форматындағы сұраулар туралы басқа ақпаратты беретін EXPLAIN ANALYZE қосылды. Бұл мәлімдеме EXPLAIN сияқты шығарады, бірақ оңтайландырушының бағалауы нақты орындалуға сәйкес келетіні туралы қосымша ақпарат береді.

MySQL қазір деректер түрінің сәйкес келмеуін болдырмау үшін сұраныстарға енгізуді орындайды, яғни оңтайландырушы енді дәлелдер түрі мен күтілетін деректер түрі сәйкес келмейтін өрнектер мен шарттар ішіндегі элементтер ағашына кастинг операцияларын қосады. Бұл сұранысты MySQL -тың алдыңғы шығарылымдарымен кері үйлесімділікті сақтай отырып, SQL стандартына сәйкес келетін сұраныстың эквивалентіне айналдырады.

Мұндай жасырын берілулер уақыттық типтер мен сандық типтер арасында стандартты сандық салыстыру операторларының кез келгенін қолданып салыстырылған кезде екі аргументті де DOUBLE ретінде беру арқылы орындалады. Олар енді DATE немесе TIME мәндері мен DATETIME мәндерін салыстыру үшін де орындалады, бұл жағдайда аргументтер DATETIME ретінде шығарылады.

Мысалы, SELECT * FROM t1 JOIN t2 ON t1 сияқты сұрау. int_col = t2. date_col қайта жазылады және SELECT * FROM t1 JOIN t2 ON CAST (t1. int_col Екі есе) = БАСТАУ (t2. date_col Қосарланған), және SELECT * FROM t1 JOIN t2 ON t1. time_col = t2. date_col t1 JOIN t2 ON CAST (t1. time_col DATETIME ретінде = CAST (t2. date_col AS DATETIME) орындауға дейін.

Берілген сұрауға қашан жіберілетінін EXPLAIN ANALYZE, EXPLAIN FORMAT = JSON немесе EXPLAIN FORMAT = TREE шығуын қарау арқылы көруге болады. Түсіндіруді де қолдануға болады, бірақ бұл жағдайда КӨРСЕТУ ЕСКЕРТУЛЕРІН кейін шығару қажет.

Бұл өзгеріс сұрау нәтижелері мен өнімділігінде ешқандай айырмашылық тудырмайды деп күтілуде.

Қаптама жазбалары

Component_test_page_track_component.so тест плагині -test пакеттеріне ауыстырылды. (Қате #30199634)

Curl жүйелік кітапханасына байланыстырудан гөрі curl қамтитын екілік пакеттер curl 7.65.3 пайдалану үшін жаңартылды. (Қате #30015512)

Қосылатын аутентификация

LDAP түпнұсқалық растамасы плагинін пайдаланатын тіркелгілер үшін сәтсіз қосылымдарды түзетуге көмектесу үшін authentication_ldap_simple_log_status және authentication_ldap_sasl_log_status жүйелік айнымалылары енді 6 (бұрынғы 5) мәнін қабылдайды. Кез келген айнымалы мәнді 6 -ға орнату LDAP кітапханасынан тиісті плагиннің қателер журналына жазылатын хабарламаларды жазуға әкеледі. (Қате #29771393)

Қауіпсіздік жазбалары

OpenSSL кітапханалары жинақталған платформалар үшін MySQL серверіне арналған OpenSSL байланыстырылған кітапханасы 1.1.1c нұсқасына жаңартылды. OpenSSL жаңа нұсқасында шешілген мәселелер https://www.openssl.org/news/cl111.txt және https://www.openssl.org/news/vulnerabilities.html сілтемелерінде сипатталған. (Қате #29868818)

Кеңістіктік мәліметтерді қолдау

Бұрын географиялық SRS геометриялық аргументтері үшін ST_Distance () тек нүкте мен нүктенің немесе нүкте мен көп нүктенің аргумент түрлерін қолдайтын. ST_Distance () енді геометрияның барлық түрлерінің географиялық SRS аргументтері үшін қашықтық есептеулерін қолдайды. Қосымша ақпарат алу үшін Нысан пішіндерін қолданатын кеңістіктік байланыс функцияларын қараңыз.

Sys схемасы туралы ескертулер

Sys.schema_unused_indexes көрінісі енді бірегей индекстерді сүзеді. Қосқан үлесі үшін Джиллиан Гунсонға рахмет. (Қате #24798995, Қате #83257)

Sys.ps_is_consumer_enabled () функциясы, егер аргумент NULL емес белгісіз тұтынушы аты болса, NULL қайтарудың орнына қате шығарады. (Қате #24760317)

Бұрын sys схемасының көздері бөлек Git репозиторийінде сақталған. sys схемасының қайнар көздері енді MySQL дереккөздерінің таралуына қосылады және сақталады (сценарийлер/sys_schema астында). Бұл өзгерістің нәтижесінде, алдағы уақытта sys схемасы сценарийлеріне қызмет көрсетуді жеңілдету үшін, init_file жүйелік айнымалысы аталған файлдағы мәлімдемелердің қолайлы форматы кеңейтілді. Мәліметтер алу үшін Серверлік жүйелік айнымалылардағы сол айнымалының сипаттамасын қараңыз.

Sys.version көрінісі ескірген және болашақ MySQL нұсқасында жойылады. Зақымдалған қосымшалар оның орнына балама қолдану үшін реттелуі керек. Мысалы, MySQL серверінің нұсқасын алу үшін VERSION () функциясын қолданыңыз.

Test Suite жазбалары

MySQL тесттері googletest соңғы нұсқасын қолдану үшін жаңартылды. (Қате #30079649)

X плагин ескертпелері

X хаттамасы сол сұрау үшін берілген көптеген ескерту хабарларын дұрыс көрсетпеді. (Қате #30055869)

NO_BACKSLASH_ESCAPES SQL режимі қосылған кезде, X Plugin жиындар туралы кесте ретінде қате хабарлады. (Қате #28208285)

Функционалдылық қосылды немесе өзгертілді

Сервер --initialize көмегімен іске қосылған кезде, ерте емес плагиндерді жүктеуге ешқандай себеп жоқ. Сервер енді ескертуді тіркейді және --initialize көмегімен берілген --plugin-load немесе --plugin-load-add опцияларын елемейді. (Қате #29622406)

Серверді іске қосу кезінде INFORMATION_SCHEMA жаңартуға қатысты диагностикалық хабарламалар саны азайтылды. (Қате #29440725, Қате #94559)

MySQL 8.0 -ге дейін REVOKE белгісіз артықшылықты жою әрекеттері үшін қате шығарды. MySQL 8.0 жүйесінде есептік жазба серверге белгісіз артықшылыққа ие бола алады, егер бұл артықшылықты тіркейтін компонент немесе плагин орнатылған кезде берілген динамикалық тіркелгі болса. Егер бұл компонент немесе плагин кейін жойылса, артықшылық тіркелмеген болып қалады, бірақ артықшылыққа ие шоттар әлі де бар. Мұндай артықшылықты алып тастауды шын мәнінде жарамсыз артықшылықтан айыруға болмайды, сондықтан REVOKE енді белгісіз артықшылықты жою әрекеттері үшін қате шығармайды. Алайда, артықшылықтың белгісіз екенін көрсету үшін REVOKE енді ескерту жасайды. (Қате #29395197)

Жаңа innodb_idle_flush_pct айнымалысы бос күйде беттерді жууға шектеу қоюға мүмкіндік береді, бұл қатты күйдегі сақтау құрылғыларының қызмет ету мерзімін ұзартуға көмектеседі. Бос уақыттарда буферді жууды шектеу бөлімін қараңыз.

Қосқан үлесі үшін Facebook -ке рахмет. (Қате #27147088, Қате #88566)

mysqld Secure_file_priv аргументі болмаса --help опциясымен шақыру енді тоқтатылмайды. (Қате #26336130)

Топтық байланыс қосылымдары үшін топтық репликация енді MySQL сервері 8.0.16 бастап қолдау көрсеткен TLSv1.3 протоколына қолдау көрсетеді. TLSv1.3 протоколын пайдалану үшін MySQL сервері OpenSSL 1.1.1 немесе одан жоғары нұсқалар көмегімен құрастырылуы керек. Топтық репликация үшін шифрланған қосылымдарды конфигурациялау туралы ақпарат алу үшін, қауіпсіз байланыс ұяшығының қабаты (SSL) арқылы топтық байланыс қосылымдарын қорғау бөлімін қараңыз.

OFFLINE_MODE жаңа нұсқасы group_replication_exit_state_action жүйелік айнымалысы үшін қол жетімді, ол сервер данасы топтан абайсызда шыққан кезде, мысалы, қолданушы қатесімен кездескенде немесе көпшілікті жоғалтқан кезде немесе топтың басқа мүшесі кезінде Топтық репликацияның қалай әрекет ететінін көрсетеді. күдік күтуге байланысты топ оны шығарады.

OFFLINE_MODE шығу әрекеті ретінде көрсетілгенде, Топтық репликация offline_mode жүйелік айнымалы мәнін ON күйіне орнату арқылы MySQL -ді офлайн режимге ауыстырады. Мүше офлайн режимінде болғанда, қосылған клиент пайдаланушылары келесі сұрау бойынша ажыратылады және CONNECTION_ADMIN немесе SUPER артықшылықтары бар клиенттерді қоспағанда, қосылыстар қабылданбайды. Топтық репликация сонымен қатар super_read_only жүйелік айнымалы мәнін ҚОСУ күйіне қояды, сондықтан клиенттер SUPER артықшылығымен қосылса да, ешқандай жаңартуларды жасай алмайды.

OFFLINE_MODE шығу әрекеті READ_ONLY әдепкі шығу әрекеті сияқты жаңартуларды болдырмайды, сонымен қатар ескірген оқуды болдырмайды (көрсетілген артықшылықтары бар клиент пайдаланушыларының оқуларын қоспағанда) және MySQL маршрутизаторы сияқты прокси құралдарының сервердің жоқ екенін тануына мүмкіндік береді. клиент байланыстарын қайта бағыттау. Ол сондай -ақ дананы қосады, осылайша әкімші мәселені шешуге тырысады, бұл MySQL -ді өшірмей, дананы жабатын ABORT_SERVER балама әрекетінен айырмашылығы.

Әдепкі бойынша, MySQL репликациясы (Топтық репликацияны қосқанда) басқа сервер қабылдаған транзакциялар репликация қызметшісіне немесе топ мүшесіне қолданылғанда артықшылықты тексеруді жүзеге асырмайды. MySQL 8.0.18 -ден сіз арнада әдетте қайталанатын транзакцияларды қолдану үшін тиісті артықшылықтары бар пайдаланушы тіркелгісін жасай аласыз және оны репликация қолданушысы үшін PRIVILEGE_CHECKS_USER тіркелгісі ретінде көрсете аласыз. Содан кейін MySQL әр транзакцияны пайдаланушы тіркелгісінің артықшылықтарымен салыстырады, сіз осы арнаға операцияға рұқсат бергеніңізді тексересіз. Есептік жазбаны әкімші транзакцияларды қолдану немесе қайта қолдану үшін қауіпсіз пайдалана алады mysqlbinlog шығару, мысалы, арнадағы репликация қатесінен қалпына келтіру үшін. PRIVILEGE_CHECKS_USER есептік жазбасын пайдалану репликациялық арнаны рұқсат етілмеген немесе кездейсоқ артықшылықты немесе қажетсіз әрекеттерден қорғауға көмектеседі.

Сіз REPLICATION_APPLIER артықшылығын пайдаланушы тіркелгісін қайталау қолданушысы ағыны үшін PRIVILEGE_CHECKS_USER ретінде көрсетуге және ішкі пайдаланылатын BINLOG мәлімдемелерін орындауға мүмкіндік бересіз. mysqlbinlog . Пайдаланушы есептік жазбасын орнатқаннан кейін, пайдаланушы тіркелгісінде серверде сақталатын кестелерді жаңарту сияқты қолданушы ағыны күтетін деректер қорын өзгертуге мүмкіндік беретін қосымша артықшылықтар беру үшін GRANT мәлімдемесін пайдаланыңыз. Дәл осындай артықшылықтар әкімшіге репликация каналында кез келген транзакцияны қолмен орындау қажет болса, есептік жазбаны пайдалануға мүмкіндік береді. Егер сіз тиісті артықшылықтарды бермеген күтпеген операция жасалса, операцияға рұқсат берілмейді және репликация қосымшасының ағыны қатемен тоқтайды.

Ішкі хабар қызметі Топтық репликацияға қосылды. MySQL модульдері бұл қызметті топтық репликацияның бар топтық байланыс байланыстарын қолдана отырып, барлық топ мүшелеріне сәйкестендіру белгісі бар жалпы хабарларды жіберу үшін пайдалана алады.

Relay_log_info_file жүйесінің айнымалысы мен --master-info-file опциясы енді қолданылмайды және MySQL-тің болашақ нұсқасында жойылады. Олар relay_log_info_repository = FILE және master_info_repository = FILE орнатылған кезде реле журналының ақпараттық журналы мен негізгі ақпарат журналының атауын көрсету үшін пайдаланылды, бірақ бұл параметрлер ескірген. Релелік журналдың ақпараттық журналы мен негізгі ақпарат журналы үшін файлдарды пайдалану MySQL 8.0-де әдепкі болып табылатын апатқа ұшырамайтын қосалқы кестелермен ауыстырылды.

Slave_rows_search_algorithms жүйелік айнымалысы енді ескірген және болашақ MySQL нұсқасында жойылады. Бұл айнымалылар жолдарды тіркеуге және репликациялауға арналған жолдардың топтамаларын дайындау кезінде сәйкестіктерді іздеу жолдарын бақылау үшін пайдаланылды. Әдепкі INDEX_SCAN, HASH_SCAN параметрі өнімділік үшін оңтайлы болып табылады және барлық сценарийлерде дұрыс жұмыс істейді.

және болашақ MySQL нұсқасында жойылады. Log_bin_use_v1_row_events жүйелік айнымалысы енді ескірген және болашақ MySQL нұсқасында жойылады. ON күйіне орнатылғанда, айнымалы жасалады mysqld екілік журналды MySQL 5.6 әдепкі болып табылатын 2 -нұсқаның екілік журнал жолының оқиғаларының орнына 1 -нұсқаның екілік журнал жолының оқиғаларын қолдана отырып жазыңыз. (Әдепкі бойынша ӨШІРУЛІ.) Екілік журнал жолының 1-нұсқасының нұсқаларын қолдану MySQL Server 5.5 және одан бұрынғы нұсқаларында жұмыс істейтін құлдармен жолға негізделген репликацияны қосады, ол 2-нұсқадағы екілік журналдық оқиғаларды қолдана алмайды.

WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS () функциясы енді ескірген, оның орнына WAIT_FOR_EXECUTED_GTID_SET () функциясын қолдану керек. Екі функция да барлық көрсетілген транзакциялар қолданылғанша немесе қосымша күту уақыты аяқталғанша күтеді. Алайда, WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS () нақты репликалау каналына қолданылды және қолданушы жұмыс істеуі керек болатын арнада транзакциялар қолданылғаннан кейін ғана тоқтады. Керісінше, WAIT_FOR_EXECUTED_GTID_SET () серверде көрсетілген транзакциялар қолданылғаннан кейін тоқтатылады, олар қалай қолданылғанына қарамастан (кез келген репликациялық арнада немесе кез келген пайдаланушы клиентінде) және репликация арналары жұмыс істеп тұр ма. WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS () күтілетін транзакция басқа репликация каналында немесе пайдаланушы клиентінен келсе, мысалы, ауысу немесе қолмен қалпына келтіру жағдайында, және ешқандай күту уақыты орнатылмаса, белгісіз уақытқа тоқтап қалуы мүмкін.

Protobuf кітапханалары қазір динамикалық түрде байланысқан. Олардың әдепкі орындары/usr/lib64/mysql/private/RPMs үшін,/usr/lib/mysql/private/DEB үшін және/lib/private/TAR құрылымдары үшін. Жаңа INSTALL_PRIV_LIBDIR CMake айнымалысы орынды басқарады.

Қателер түзетілді

NDB кластері: Басылған шартты қолдана отырып өңделген сұрау ORDER BY тармағын қосқанда қате нәтиже берді. (Қате #29595346)

Әдебиеттер: Бұл мәселе регрессия болып табылады: #28672214 қате.

NDB кластері: NDB тасымалдаушы қабаты хабарлардың көлемін 32768 байт жіберу буферіне шектейді, хабар өлшеміне қосымша (және қатаң) шектеулер қояды. Жіберу буферіне хабар қосылған сайын, хабардың бос орынға сәйкес келуін қамтамасыз ету үшін бетті тексеру жүргізіледі, егер жаңа бет қолданылады. Ағымдағы мәселе, хабарламаның көлемі бос беттен асып кеткенде, бұл хабардың бос параққа сыйып кететінін тексеру үшін ешқандай тексеріс жүргізілмегендіктен туындады, бұл буферді қайта жазуға және келесіге қайта жазуға әкелді. жадыдағы бет. Деректер түйіндері үшін жіберу буфері (thr_send_page) қолдайтын ең үлкен хабар API мен басқару түйіндері үшін 32756 байтты құрайды, бұл максимум 32752 байтты құрайды. (Жеке деректер түйінінде жіберілетін сигналдар бұл шектеулерге жатпайды, себебі бұл жағдайда жіберуші немесе тасымалдаушы буферлері қолданылмайды). Енді, жаңа бет қолданылған кезде, хабардың көлемі жаңа бетте қол жетімдіге сәйкес тексеріледі.

Жоғарыда сипатталған мәселені шешу үшін жасалған жұмыстың бір бөлігі ретінде байланысты тестілеу мен күйін келтіруді жеңілдету үшін үш жаңа DUMP пәрмені қосылады: DUMP 103003 (CmvmiRelayDumpStateOrd) DUMP пәрменін басқа түйін DUMP 103004 (CmvmiDummySignal) және DUMP 103005 (CmvSiSendD) арқылы жібереді. ұзақ хабарламалар жіберу үшін қолданылады. (Қате #29024275)

NDB кластері: ТҮСІНДІРУ ФОРМАТЫ = Ағаш шарттардың дұрыс түсіндірілуін бермеді және NDBCLUSTER сақтау қозғалтқышына қосылды. Мәселелерге мыналар кірді:

Басылған шарттар көрсетілмеді.

Итерілген қосылыстың түбірі көрсетілмеді.

Итерілген қосылудың баласы оның ата -аналық операциясына сілтеме жасамады.

InnoDB: Ішкі функция (btr_push_update_extern_fields ()) жаңадан қосылған сырттан сақталған өрістерді алу және оларды пессимистік жаңарту кезінде немесе жазбаның алдыңғы нұсқасына қайту кезінде жаңарту үшін пайдаланылады. Жаңадан қосылған сырттан сақталған өрістер басқа функциямен жаңартылады. Сондай -ақ, сырттан сақталатын өрістердің санын анықтау үшін қолданылатын әдіс түзетілді. (Қате #30342846)

InnoDB: DOPP UNDO TABLESPACE операциялық кеңістігінде деректер файлы жоқ, кері қайтару операциясы сегменттеу қатесін тудырды. (Қате #30155290)

InnoDB: Trx_rseg_add_rollback_segments ішкі функциясындағы қате түзетілді. (Қате #30114226, Қате #96372)

InnoDB: Контекциялық білімді транзакцияларды жоспарлау (CATS) кодындағы проблемалық бекіту коды қайта қаралды. (Қате #30086559)

InnoDB: Ib :: fatal және ib :: fatal_or_error конструкторларының қоңырауларында туынды сыныпқа берілген аргументтер еленбеуі мүмкін, нәтижесінде қате туралы хабарлар жарамсыз болады. Сонымен қатар, маңызды қате болған жағдайда, ib :: fatal_or_error деструкторы хабарламаны басып шығарудан бұрын сервердің шығуына себеп болуы мүмкін. (Қате #30071930)

InnoDB: Бүлінген кестені кесте сілтемелерінің саны нөлге жеткенге дейін кестенің кэшінен жою мүмкін болды. (Қате #30065947, Қате #96224)

InnoDB: Ішкі row_update_inplace_for_intrinsic () функциясының кодтық жолында жөндеуді растау сәтсіздігін тудыратын қажетті шағын транзакция (mtr) жоқ. (Қате #30065518)

InnoDB: Ішкі fsp_srv_undo_tablespace_fixup () функциясы іске қосу кезінде шақырылған кезде қайтару :: ddl_mutex құлпын алмады, бұл белгілі бір жағдайларда бекітудің бұзылуына әкелуі мүмкін. (Қате #30029433, Қате #30461911, Қате #97356)

InnoDB: Rename_tablespace_name () функциясын тексеру көрсеткендей, егер old_shard- & gtget_space_by_id (space_id) кесте идентификаторын таппаса, ол old_shard- & gtmutex_release () шақырусыз қайтады. (Қате #30027771)

InnoDB: Атауында «FTS» бар кесте кеңістігі толық мәтінді индекс кестесінің кесте кеңістігі болып қате анықталды және жаңарту кезінде деректер сөздігінде тіркелмеген, бұл жаңарту операциясының сәтсіз болуына әкелді. (Қате #29992589)

InnoDB: Ibuf_merge_or_delete_for_page () функциясы, өзгертулер буферіндегі беттерді біріктіру мен жоюға жауапты, енді кесте кеңістігі мен уақытша кесте кеңістігін қайтару үшін шақырылмайды. Өзгерту буферінде сол кесте кеңістігінің түрлері жоқ. (Қате #29960394, Қате #95989)

InnoDB: Буферлік бассейн өлшемінің айнымалыларының кейбір комбинациялары (--innodb-buffer-pool-instances, --innodb-buffer-pool-size, and --innodb-buffer-pool-chunk-size) 0-ге тең болуға әкеледі. 1 немесе беттің көлеміне еселік емес мән және т.б., буферлік пулды құру мен өлшемін түзу кезінде қателіктер тудырады. (Қате #29951982)

InnoDB: Кестені қайтару кестесі қысқартылған кезде серверден шығу серверді қайта іске қосқаннан кейін клон әрекеті алға жылжытылған кезде келесі қатені тудырды: [ERROR] [MY-011825] [InnoDB] [FATAL] Clone File Roll Forward: жарамсыз файл күйі: 0 . (Қате #29949917)

InnoDB: АЛТЫН КЕСТЕ. DISCARD TABLESPACE операциясы іліну жағдайын тудырды. (Қате #29942556, Қате #30324703)

InnoDB: Мұрағат ағынының бұзылуынан кейін клондау әрекеттері келесі қатемен сәтсіз аяқталды: ERROR 3862 (HY000): донорды клондау қатесі: 1317: сұраудың орындалуы үзілді. (Қате #29930839)

InnoDB: Клонға байланысты регрессия индексті және индекссіз жаңарту операцияларының өнімділігін шамалы төмендетуге әкелді. (Қате #29925409)

InnoDB: InnoDB енді іске қосылған кезде пайда болатын кесте кеңістігін іздеу кезінде жасырын каталогтар мен файлдарды елемейді. Жасырын каталогтар мен файлдарға «» -дан басталғандары кіреді. және атрибуттармен анықталған Windows жүйесіндегі жасырын және жүйелік каталогтар мен файлдар. (Қате #29900671, Қате #95071, Қате #30068072)

InnoDB: Тұйықталуды анықтауды жақсарту үшін, деректер құлыптары арасындағы тұйықталу циклін анықтау міндеті транзакция ағынынан арнайы фондық ағынға ауыстырылды. (Қате #29882690)

InnoDB: Кезінде mysql.gtid_executed кестесін жаңарту mysqld инициализация қате журналына келесі ескертуді басып шығаруға себеп болды: [Ескерту] [MY-010015] [Қайталау] Gtid кестесі пайдалануға дайын емес. 'Mysql.gtid_executed' кестесін ашу мүмкін емес. Жаңарту мен байланысты ескерту енді болмайды. (Қате #29871809)

InnoDB: InnoDB Standard Monitor шығысындағы ең соңғы анықталған құлыптау бөлімі (сонымен қатар SHOW ENGINE INNODB STATUS басып шығарады) тұйықталу цикліне қатысатын транзакциялар туралы қосымша ақпаратты қамту үшін кеңейтілді. (Қате #29871641)

InnoDB: SDI сақтау үшін пайдаланылатын буфердің өлшемін тексеру кезінде серияланған сөздік ақпаратының (SDI) кіріс және шығыс мәндерін салыстыру үшін қате аргумент қолданылды. (Қате #29871525, Қате #95606)

InnoDB: Клондау операциясы кезінде кесте кеңістігін қайтару файлы қайта жазылды, сол атпен кесте кеңістігінің файлдары донордағы әр түрлі каталогтардан алушының бір каталогына көшірілді. Клондау операциясы енді қайталанатын кесте кеңістігінің қайталанатын атаулары кездессе, қате туралы хабарлайды. Деректер алушыға клондалған кезде, кесте кеңістігін қайтару файлдары innodb_undo_directory айнымалысы анықтайтын каталогқа клондалады. Файлдар бір каталогқа клондалғандықтан, кесте кеңістігінің қайталанатын файл атауларына рұқсат жоқ. (Қате #29837617)

InnoDB: Клондау операциясы MySQL сервер данасынан кіші қайталау журнал файлының өлшемі мен транзакциялардың үлкен санымен клондау кезінде көптеген қайталау журналдарының файлдарын тудырды. Қайталанатын журнал файлдарының үлкен саны кейде іске қосуды тоқтатады немесе бекітеді. Әйтпесе, қайта жүктеу журналының артық санын тазаламай, іске қосуға рұқсат етілді. (Қате #29837490)

InnoDB: Қалпына келтіру кезінде шифрланған кестелерге қайталау журналдарын қолдану кезінде пайда болған кесте қателерін елемеуге болады, бұл іске қосуды жалғастыруға мүмкіндік береді. Бұл жағдайда іске қосуды тоқтату керек. (Қате #29820184, Қате #95183)

InnoDB: Қайта тіркеу журналы файлының өлшемі іске қосылған кезде сервер қателер журналына басып шығарылды. (Қате #29818711)

InnoDB: Жазбаны құлыптау сұраныстары болған кезде құлыптау кезегіндегі құлыптау объектілерін (lock_t құрылымдарын) қайта пайдалануға кедергі келтіретін шектеу алынып тасталды. (Қате #29814308)

InnoDB: Ұзын бөлінген кесте атауын файл атауына түрлендіру кезінде файл атауын сақтайтын буферде бос орын жеткіліксіз болды, бұл бекіту қатесін тудырды. (Қате #29813582)

InnoDB: Кейбір транзакцияны құлыптау құрылымының өрістері (trx- & gtlock) мутекспен дұрыс қорғалмаған. (Қате #29809137)

InnoDB: Қалпына келтіру кезінде сегментті бос қайтаруды жаңарту бекітуді тудырды. (Қате #29802703)

InnoDB: Егер алушының деректерінде толық мәтінді индексі бар кесте болса, алушыдағы деректерді жою әрекеті кезінде клондау әрекеті сәтсіз аяқталды. (Қате #29796507)

InnoDB: Кесте бойынша кесте кеңістігі жойылғаннан кейін, ескі кестенің атын өзгерту және сол атпен жаңа кестені құру кезінде қате туралы хабарланды.Қате файлдың ескірген ақпаратына байланысты болды. (Қате #29793800)

InnoDB: Сервер дискіге толмаған күйінде файлды тек оқу режимінде ашуға тырысатын сынақ күйін келтіруді растауды тудырды. Бекіту серверге файлды қайта ашуға мүмкіндік беру үшін және егер бірнеше әрекеттен кейін сәтсіз болса, қате туралы хабарлау үшін жойылды. (Қате #29692250, Қате #95128)

InnoDB: RENAME TABLE операциясы кезінде жасалған шетелдік кілттермен байланысты кестелер ескі кестенің атауын қамтиды. (Қате #29686796)

InnoDB: Сервер деректер ұзындығы нөлге тең емес баған үшін NULL мәнін берді. (Қате #29654465)

InnoDB: MySQL 8.0.13 данасынан (немесе одан бұрын) бөлінген кестені MySQL 8.0.14, 8.0.15 немесе 8.0.16 данасына импорттау кіші әріптер кестесі атаулары = 1 арқылы анықталған бастапқы және мақсатты даналарға арналған «кесте кеңістігі жоқ» қатесімен сәтсіз аяқталды. . Кесте кеңістігінің файлы мен импорттау операциясында қолданылатын метадеректер файлының аты файл регистрінің сәйкес келмеуіне байланысты табылмады. (Қате #29627690, Қате #94850)

Әдебиеттер: Бұл мәселе регрессия болып табылады: #26925260 қатесі.

InnoDB: Оқу жинағы (TABLE :: read_set) QUICK_SKIP_SCAN_SELECT :: get_next () өңдегіші әдісінің қоңыраулары үшін дұрыс орнатылмаған, бұл бекіту қатесін тудырады. (Қате #29602393)

InnoDB: Эксклюзивті резервтік құлып енді негізгі кілттердің айналуы кезінде кесте кеңістігін қысқарту операцияларын блоктау үшін қолданылады. Бұрын операцияларды синхрондау үшін кесте кеңістігін қайтару аттарындағы метадеректер құлыптары қолданылған. Бұл түзету сонымен қатар негізгі кілттердің айналуы мен кесте кеңістігін болдырмау әрекеттері арасында пайда болатын тығырықты шешеді. (Қате #29549938, Қате #30461225, Қате #97352)

InnoDB: Таңдауды орындау кезінде қажет емес келесі пернелер құлпы алынды. FOR [SHARE | UPDATE] сұранысы, WHERE шартымен диапазонды көрсетеді, бұл тым көп жолдың құлыпталуына әкеледі. Бұл мәселенің жиі кездесетін жағдайлары тек ізделетін ауқыммен қиылысатын жолдар мен бос орындар құлыпталатын етіп шешілді. (Қате #29508068)

InnoDB: Виртуалды бағанды ​​бірінші позицияға қалыпты бағанмен қосу бекіту қатесін тудырды. (Қате #29501324)

InnoDB: Өшіру процесі InnoDB фондық ағындарының шығуын күтпеді, бұл өшірудің тоқтап қалуына әкелуі мүмкін, MySQL транзакциялар тізімінен транзакцияларды жою үшін фондық ағындарды күтеді. Енді InnoDB фондық ағындарының дұрыс шыққанына көз жеткізу үшін тексеру жүргізіледі. Сонымен қатар, InnoDB негізгі ағынының өшіру уақытын жақсарту үшін аралық өшіру күйі қосылды. (Қате #29417503)

InnoDB: TempTable сақтау қозғалтқышы жұмыс істеген кезде жадтың ағуы орын алды, ол бөлінген жадтың соңғы блогын алмастыра алмады, ол TempTable ағыны жергілікті қоймада ағын шыққанша сақталады. (Қате #29300927)

InnoDB: Өткізу ауыр жұмыс жүктемесі кезінде кіші innodb_io_capacity_max параметрімен, бір бетті тазартатын ағынмен және бірнеше буферлік бассейн данасымен тоқтап қалды. (Қате #29029294)

InnoDB: Ұзақ жұмыс істейтін ALTER TABLE. Бір мезгілде кірістірулермен ADD INDEX операциясы семафорлық күтуді тудырды. Сатя Бодатапиге патч үшін рахмет. (Қате #29008298)

InnoDB: INFORMATION_SCHEMA.INNODB_COLUMNS кестесі MySQL 5.7 -ден MySQL 8.0 -ге жаңартылғаннан кейін бөлінген кесте бағандарын көрсетпеді. MySQL 8.0 шығарылымында жасалған бөлінген кестелер үшін INFORMATION_SCHEMA.INNODB_COLUMNS тек бірінші кесте бөлімінің бағандарын көрсетеді. (Қате #28869903, Қате #93033)

InnoDB: Ішкі rtr_page_split_and_insert () функциясы рекурсивті деп аталады. Функцияға ішкі қоңырау сол функцияға сыртқы қоңырау әлі де қолданатын объектіні шығарды, бұл бекітудің бұзылуына әкелді. (Қате #28569379)

InnoDB: Белгілі бір жағдайларда innodb_limit_optimistic_insert_debug айнымалы мәнін 2 -ге орнату қате туралы хабарлауы керек болған кезде отладтауды растады. (Қате #28552330, Қате #92187)

InnoDB: Транзакция рекордтық құлыпты келесі кілттер құлыпына жаңартуға тырысқанда, тығырыққа тірелу мүмкін болды. (Қате #23755664, Қате #82127)

InnoDB: INFORMATION_SCHEMA.INNODB_METRICS lock_deadlocks есептегіші барлық тығырықтарды есептемеді. Қосқан үлесі үшін Лауринас Бивейниске рахмет. (Қате #21278148, Қате #77399)

InnoDB: Оқу операциясы кезінде хабарланған қате оқылған файлдың атын анықтамады. (Қате #21120885, Қате #76020)

Репликация: Егер group_replication_set_communication_protocol () функциясы кейбір топ мүшелері қолдамайтын байланыс хаттамасының нұсқасын орнату үшін қолданылса, протоколды өзгерту процедурасы дұрыс тоқтатылған жоқ. Қазір мәселе шешілді. (Қате #30209596)

Репликация: Егер топтық репликацияда пайдаланылатын TCP қосылымдары ұзақ уақытқа созылған желілік қателікке байланысты үзіліс уақытында болса, топтық байланыс механизмі (XCom) жергілікті қосылымды қалпына келтіре алмайды, бұл жағдайда топтық репликацияны қайта бастауды талап етеді (№ 25656508 қатені қараңыз). Бұрын мұндай жағдайда топтық репликацияны тоқтату әрекеті XCom -ды тоқтатып, қайта жүктеуге кедергі келтірді. Бұл мәселе енді XCom дұрыс тоқтатылатындай және жергілікті байланысты қалпына келтіру үшін топтық репликацияны қайта бастауға болатындай шешілді. (Қате #30132500)

Сілтемелер: Сондай -ақ қараңыз: Қате #22158368.

Репликация: ANSI_QUOTES SQL режимі қосылған кезде, Group Replication таратылған қалпына келтіру үшін қашықтан клондау әрекеттерін орындау үшін MySQL серверінің клондық плагинінің болуын тексеру кезінде қатені қайтарады. Қазір мәселе шешілді. (Қате #30099796)

Репликация: Default_table_encryption жүйесінің айнымалы мәні репликация тобының барлық мүшелерінде бірдей болуы керек және Топтық репликация жұмыс істеп тұрған кезде оны өзгерту мүмкін емес. Егер SET GLOBAL операторы қолданылса, жүйелік айнымалының мәнін өзгертуге топтық репликация рұқсат бермеді, бірақ егер SET PERSIST операторы қолданылса, оған қате рұқсат етілді. (Қате #30031228, Қате #96158)

Репликация: Егер мүшенің group_replication_local_address параметрі өзгертілсе және мүше қайтадан топқа қосылса, ескі жергілікті мекенжай көшірмелері кейбір жерлерде Топтық байланыс жүйесі (GCS) арқылы сақталады. Топтық репликацияның жергілікті мекенжайы енді қажет болғанда кэштелмей, алынады. (Қате #29910699)

Репликация: Топтық репликация қосылатын мүшеге транзакцияларды қамтамасыз ету үшін қашықтан клондау әрекетін қолданған кезде, егер қосылу мүшесі операция кезінде тоқтатылса, ол таза түрде өшірілмеді. (Қате #29902389)

Репликация: Default_table_encryption жүйелік айнымалысының сеанс мәні репликацияланады, осылайша репликация қызметшілері дерекқорлар мен кесте кеңістіктері үшін шифрлаудың дұрыс параметрін сақтайды. Table_encryption_privilege_check жүйелік айнымалы мәні ON күйіне орнатылған репликация арнасы үшін TABLE_ENCRYPTION_ADMIN артықшылығы default_table_encryption сеансының мәні өзгеретін оқиғаларды қолдану үшін қажет. Егер бұл артықшылық репликациялаушыға берілмесе, оқиғаға қажетті шифрлау параметрі шын мәнінде құлдың әдепкі шифрлау параметрімен бірдей болатын кейбір жағдайларда репликация қатемен тоқтады. Сондай -ақ, құлдан басқа шифрлау параметрі бар мәлімдеме жұмыс істемеген кезде сәтті болуы мүмкін болды. Енді мінез -құлық түзетілді, сондықтан TABLE_ENCRYPTION_ADMIN артықшылығы жоқ репликациялаушыға өзінің әдепкі шифрлау параметріне сәйкес келетін оқиғаларды қолдануға рұқсат етіледі және шифрлау параметрін қажетсіз орнату талап етілмейді, бірақ егер ол оқиға болса, тиісті артықшылықты тексереді. басқа шифрлау параметрін қажет етеді. (Қате #29818605)

Репликация: Group_replication_unreachable_majority_timeout жүйелік айнымалысы көрсеткен секундтағы күту уақыты әр екі секунд сайын тексерілді. Енді күту уақыты әр секунд сайын тексеріліп отырады, осылайша тақ сандар сақталады. (Қате #29762005)

Репликация: MySQL 8.0.14 жүйесінде топтық репликация үшін енгізілген кіріс арнасы топтық репликацияның топтық байланыс жүйесі (GCS) компоненті мен жергілікті топтық байланыс механизмі (XCom) данасы арасындағы байланыс үшін TCP ұясының орнына ортақ жад кезегін пайдаланады. Бұл кіріс арнасын SELinux қондырғыларында орнату мүмкін болмады, яғни MySQL 8.0.14 немесе одан жоғары деңгейге жаңартылған мүшелер топқа қайта қосыла алмады. Топтық репликация басталған кезде, XCom данасы уақытша порт ауқымынан GCS -ке кіріс арнасы үшін байланыс орнатуға мүмкіндік беретін портты уақытша ашты, бірақ SELinux -те mysqld Бұл портқа қосылуға рұқсат жоқ. Шешім MySQL -ке кез келген портқа қосылуға мүмкіндік беретін SELinux саясатын өзгерту болды, бірақ бұл қауіпсіздікті төмендетеді. MySQL 8.0.18 -ден мәселе шешілді. XCom мен GCS енді кіріс арнасына байланыс орнату үшін эфемерлік портты пайдаланбайды, керісінше SELinux рұқсат етуі тиіс group_replication_local_address жүйелік айнымалысы арқылы реттелген Топтық репликация байланыс портын пайдаланады (Жиі қойылатын сұрақтарды қараңыз). (Қате #29742219, Қате #30087757)

Репликация: Егер SQL ағыны тоқтау процесінде тұрғанда SQL ағынын қосалқы іске қосу үшін START SLAVE мәлімдемесі шығарылса және бір мезгілде құл мәртебесі туралы сұраныс жасалса, үш ағыннан тұратын тығырық орын алуы мүмкін. Енді мәселе SQL ағыны тоқтатылған кезде құлыпты босату арқылы шешілді. (Қате #29697588, Қате #95115)

Репликация: Топтық репликация жалпы атау мәні қойылмалы таңбаны қолданған сервер сертификаттарынан бас тартты. Дұрыс салыстыру әдісі қазір қолданылады. (Қате #29683275, Қате #95068)

Репликация: Топтық репликацияның топтық байланыс жүйесі (GCS) STOP GROUP_REPLICATION шығарылғаннан кейін мүшеден хабарламаларды жеткізуі мүмкін болды және мүше топтағы OFFLINE күйіне өтті, нәтижесінде қате пайда болды. GCS енді хабарлама жібермес бұрын оның топқа жататынын растайды. (Қате #29620900)

Репликация: WAIT_FOR_EXECUTED_GTID_SET () функциясындағы құлыптау мәселесі сервердің белгілі бір жағдайларда істен шығуына әкелуі мүмкін. Қазір мәселе түзетілді. (Қате #29550513)

Репликация: START SLAVE операторы орындалғанда binlog_encryption жүйесінің айнымалы мәні өзгерсе, тығырыққа тірелуі мүмкін. (Қате #29515210)

Репликация: CHANGE MASTER TO операторының MASTER_HEARTBEAT_PERIOD опциясымен бақыланатын репликациялаушыға арналған жүрек соғу интервалын миллисекундпен ажыратуға болады. Бұрын шебердің қосарланған журналының қоқыс ағыны бірнеше рет өткізілген оқиғалар кезінде жүрек соғуының шамадан тыс белсенділігін тудыратын құлға жүрек соғу сигналын жіберу керектігін есептеу үшін бірнеше секундты пайдаланды. Бұл мәселені шешу үшін шебер мен құлдың жүрек соғуына байланысты барлық есептеулері дәлдік үшін наносекундтардың түйіршіктігін қолдану арқылы жүзеге асады. Қосқан үлесі үшін Facebook -ке рахмет. (Қате #29363787, Қате #94356)

Репликация: Функционалды индексі бар кестені құру кестеде жасырын бағанды ​​жасайды, бірақ бұл баған кестеде әрқашан бір орында орналаспаған, бұл кейінірек кестеге бағанды ​​(немесе бағандарды) қосу жасырын бағаннан шығуы мүмкін дегенді білдіреді. басқа CREATE TABLE мәлімдемесінде қосымша баған немесе бағандары бар, басқаша ұқсас кестемен салыстырғанда басқа позицияда. Мысалы, бұл айырмашылық t1 және t2 кестелерінің арасында айқын болуы мүмкін, t1 жасалып, содан кейін CREATE TABLE t (INT, INDEX ((a+1))) және ALTER TABLE t ADD COLUMN b INT деген екі мәлімдеме арқылы өзгертілуі мүмкін, және t2 CREATE TABLE t2 (INT, b INT, INDEX ((a+1))) көмегімен жасалған, дегенмен SHOW CREATE TABLE t1 және SHOW CREATE TABLE t2 бірдей нәтиже бергенімен (кесте атауларынан басқа).

Жоғарыда сипатталған мәселе екілік журналда Table_map_log_events сипаттаған кестелердің ішкі анықтамалары әр түрлі болатындықтан проблемалы болуы мүмкін. Бұл дегеніміз, егер мұндай кесте CREATE TABLE көмегімен жасалса, содан кейін мастерде ALTER TABLE, содан кейін құл орналастырылған. mysqldump , кестенің құлдық нұсқасы бірыңғай көмегімен құрылады КЕСТЕ ЖАСАУ мәлімдеме және жол оқиғаларының кейінгі репликациясы сәйкес келмеуіне байланысты қатемен сәтсіздікке ұшырайды.

Бұл мәселе барлық жасырын жасалған бағандарды әрқашан бағандар тізімінің соңында орналасуға мәжбүрлеу арқылы шешіледі, баған атауы бойынша сұрыпталған бірнеше жасалған бағандар. Егер кестеге жаңа функционалдық көрсеткіш бөлігі қосылса, жаңа жасырын баған осы ережеге сәйкес енгізіледі. Сонымен қатар, егер пайдаланушы баған болып табылмайтын жаңа баған жасаса, баған әрқашан бірінші жасырынған бағаннан бұрын қосылады.

Бұл өзгерістен зардап шеккен кестелердің құрылымы жаңарту кезінде автоматты түрде өзгертілмейді, бұл ALTER TABLE орындау арқылы анық жасалуы керек.

Репликация: Егер RESET MASTER операторы оны орындау кезінде тоқтатылса, екілік журнал кейіннен жазу үшін қол жетімді емес. (Қате #29125121)

Репликация: Өтпелі немесе кіші топтық репликация тапсырмаларын орындаған кейбір ағындар, мысалы, кешіктірілген плагин инициализациясы, өнімділік схемасы ағындары кестесінде көрінбеді. (Қате #28930537, Қате #93212)

Репликация: Қате себебінен мүше топтан шыққанда, топтың шығуының түпкі себебіне қарамастан, мүшенің дәл сол әрекеттерді орындауын және сол қате туралы хабарламаларды шығаруын қамтамасыз ету үшін топтық репликация процесінің орындалуы. (Қате #28866495, Қате #93027)

Репликация: Қолданылатын GTID және MASTER_AUTO_POSITION ON күйіне орнатылған көп ағынды қызметшіде күтпеген тоқтаудан кейін релелік журналды қалпына келтіру әрекеті болады, егер релелік журналдар жоғалса, ол репликацияның басталуын болдырмайды. Алайда, бұл қадам қажет болмады, өйткені GTID автоматты түрде орналасуын кез келген жетіспейтін транзакцияларды қалпына келтіру үшін пайдалануға болады. Қалпына келтіру жағдайында, құл енді MASTER_AUTO_POSITION ҚОСУ күйіне орнатылғанын тексереді, егер ол болса, өткізіп жіберуге немесе өткізіп алмауға болатын транзакцияларды есептеу қадамын өткізіп жібереді, осылайша ескі реле журналдары қажет емес және қалпына келтіру жалғасуы мүмкін. оларсыз. (Қате #28830834, Қате #92882)

XA COMMIT мәлімдемелері үшін мәлімдемелерді орындауға қатысатын плагиндердің шақыру реті анықталмаған, бұл репликация проблемаларына әкелуі мүмкін. Деннис Гаоға түзетуге үлес қосқаны үшін рахмет. (Қате #31082237, Қате #99051)

Keyring_aws плагині коммерциялық Docker RPM пакеттеріне кірмеген. (Қате #30199423)

SQL сценарийлерінен C көзін құру кезінде кейбір utf8 кодталған таңбалар жолдар бойынша бөлінді. Пржемыслав Скибинскиге патч үшін рахмет. (Қате #30152555, Қате #96449)

ARRAY резервтелген сөзі INFORMATION_SCHEMA.KEYWORDS кестесінде сақталмаған болып тізімделген. (Қате #30134275, Қате #96416)

|| бар кейбір мәлімдемелер PIPES_AS_CONCAT SQL режимі қосылған кезде де талдау қатесі пайда болды. (Қате #30131161, Қате #96405)

Әдебиеттер: Бұл мәселе регрессия болып табылады: #29305022 қатесі.

LOAD DATA мәлімдемелері егер SET сөйлемі болса, NO_AUTO_VALUE_ON_ZERO SQL режимін қате елемеді. (Қате #30126375)

Thread_pool плагині қосылған болса, серверден шығумен автоматты жаңартулар сәтсіз аяқталды. (Қате #30121742)

Әр орындалу үшін материалданған алынған кестені қайта есептеу керектігін анықтаған кезде, кестеде қайта материалдандыру жалаушасының орнына ата -аналық сұрау блогының мүмкін еместігі қолданылды (қазіргі уақытта тек JSON_TABLE () үшін ғана жарамды). Бұл қажетсіз қайта материалдандыруды тудыруы мүмкін, әсіресе біріктірілмеген көріністерге қарсы сұраулар жасаған кезде, бұл өнімділіктің төмендеуіне әкеледі. (Қате #30110851)

IGNORE сөйлемімен LOAD DATA CHECK шектеуінің бұзылуын тудырған жолдарды өткізіп жіберуі керек және келесі жолдармен жалғасуы керек, бірақ ол қатемен тоқтады. (Қате #30084966, Қате #96296)

Sql_require_primary_key қосылған кезде, клон плагинін инициализациялау сәтсіз аяқталды, себебі ол индекстерді немесе негізгі кілттерді қолдамайтын екі динамикалық өнімділік схемасы кестесін құрды. Sql_require_primary_key әсері енді репликацияға қатыса алатын сақтау қозғалтқыштарымен шектеледі (қазіргі уақытта өнімділік схемасынан басқа барлық сақтау қозғалтқыштары) (Қате #30083300, Қате #96281)

MacOS жүйесінде Protobuf компиляциясы сәтсіз аяқталды. (Қате #30079536, Қате #96263)

Автоматты жаңартулар үшін audit_log плагині қайта жүктелмеді, бұл аудиттің бұрынғы режимде басталуына әкелді. (Қате #30068110)

Қайталанатын жолдарды жою үшін, арамшөптерді жоюды оңтайландыру үшін әрбір жолға бірегей идентификатор қажет, оны өңдеуші :: position () шақыру арқылы сақтайтын қозғалтқыш қамтамасыз етеді, бірақ бұл функция әрқашан дұрыс уақытта шақырылмайды немесе кейде шақырылады. қажет болмаған кезде. Мұндай қоңырауларды қалай және қашан қоюға қатысты мәселелер оңтайландыруда көптеген қателердің көзі болды. Бұл түзету өңдеуші :: position () шақыру жауапкершілігін итераторларға жүктейді, олардың әдепкі енгізулері әдетте бұл тапсырманы өз бетінше шешеді. (Қате #30060691)

Әдебиеттер: Сондай -ақ қараңыз: Қате #29693294, Қате #30049217, Қате #30153695.

Сервер COM_PROCESS_INFO пәрменін дұрыс пайдаланбағандықтан шығуы мүмкін. (Қате #30032302)

Ескертулер әдетте ескірген жүйелік айнымалыларға мән берілген кезде жасалады, бірақ бұл жүйенің тұрақты айнымалылары серверді іске қосу кезінде өңделгенде орын алған жоқ. (Қате #30030648)

Bind_address бірнеше адрестерден тұратын мәнге орнатылғанда, host_cache_size = 0 параметрі клиенттің қосылу уақытында сервердің шығуына себеп болды. (Қате #30018958)

Windows жүйесінде Ninja құрастыру түрі үшін Protobuf компиляциясы сәтсіз аяқталды. (Қате #30018894)

ШОУ ПРОЦЕССЛИСТІ шығысы аяқталған және енді жұмыс істемейтін мәлімдемелерді қамтуы мүмкін. (Қате #29999818)

A mysqldump қате туралы хабарлар буфері тым кішкентай болды, бұл хабарды қысқартуға әкелуі мүмкін. (Қате #29999782, Қате #96074)

MySQL 5.7-ден MySQL 8.0-ге кестені импорттау кезінде орнында жаңарту кезінде кестелерді импорттау кезінде «келесіде қолданылатын» орнына «соңғы» автоматты өсіру мәндері кэштелді, бұл жаңартудан кейін кесте кэшінен оқылатын кез келген кестеге әкелді. автоматты өсу мәндері. (Қате #29996434)

Тұрақты жиналуды қолданатын дайындалған мәлімдемені орындаған кезде, MEMROOT -та бөлінбейтін, керісінше, стекке бөлінген орнын қайтару орнын тіркеуге болады, сондықтан оның көлемі енді болмайды. (Қате #29990693)

Әдебиеттер: Сондай -ақ қараңыз: Қате #29939331.

ZEROFILL ескіргені туралы ескерту CREATE TABLE үшін жасалды. КЕСТЕ ЖАСАУ ЖӘНЕ ЖАСАУ. ЖЫЛ бағанынан тұратын кестелер жасаған LIKE мәлімдемелері. Бұл шатастыруы мүмкін, себебі ZEROFILL атрибуты тек YEAR бағанына жанама түрде қосылған болуы мүмкін. Шатастырмау үшін мұндай мәлімдемелер үшін ескерту бұдан былай көтерілмейді. (Қате #29961060)

WHERE сияқты биттік операторларды қолданатын сұрау text_col & lt ( int_col & amp int_col ) ЖӘНЕ int_col = -1, кез келген жолды күткендей қайтара алмады. (Қате #29957969)

Оңтайландырушы нұсқаулардағы ресурстар тобының ақаулары сервердің күтпеген әрекетіне әкелуі мүмкін. (Қате #29955732)

ТҮСІНДІРУ FORMAT = TREE қолданғанда FORMAT = JSON сияқты шығындарды көрсетпеді. Атап айтқанда, FORMAT = TREE қолданған кезде, есептелген шығын қосылу үшін eval_cost ескерілді, бірақ негізгі кестелер үшін емес. (Қате #29953579)

Solaris үшін mysqld.cc құрамында memcntl () прототипі болды, ол енді қажет емес. Прототип жойылды. (Қате #29953495, Қате #95971)

Solaris үшін -DWITH_SSL = жүйе GCC -мен компиляция кезінде жұмыс істемеді. (Қате #29953460, Қате #95970)

-DWITHOUT_SERVER = 1 көмегімен теңшелген MySQL құрылымдары сәтсіз аяқталды. (Қате #29948728, Қате #95740)

Field_tiny :: pack () ішкі әдісі әрқашан шекараларды тексеруді күтілгендей орындамады. (Қате #29948029)

Әдебиеттер: Сондай -ақ қараңыз: Қате № 31591391.

Плагиндерді түсірудің дұрыс жүргізілмеуі сервердің шығуына әкелуі мүмкін. (Қате #29941948)

Ішкі MEM_ROOT класы жадтан шыққан барлық қателерді дұрыс өңдемеді. (Қате #29940846)

JSON_SCHEMA_VALIDATION_REPORT () JSON схемасы бойынша расталмаған JSON құжаты мен тым терең кірістірілген JSON құжатының айырмашылығын тудырмады, бұл кейбір жағдайларда дұрыс емес әрекетке әкелді. (Қате #29940833)

& Lt = & gt операторын қолдану өте үлкен тұрақтыларды салыстыру кезінде қате нәтиже беруі мүмкін. (Қате #29939331, Қате #95908)

Keyring_aws плагині үшін keyring_aws_region жүйелік айнымалысы үшін кейбір жарамды аймақ мәндері қабылданбады. (Қате #29933758)

Қателерді түзету үшін GEOMETRY бағанының және SELECT * FROM (SELECT NULL) жиынтық деректер түрін есептеу кезінде UNION сұраулары кезінде бекітуді көтеруге болады. (Қате #29916900, Қате #95827)

Екілік таңбалар жиынтығымен анықталған бағандар үшін SHOW CREATE TABLE орындалған кезде синтаксистік қате тудыратын CREATE TABLE операторларын жасай алады. (Қате #29909573, Қате #95801)

Деректер сөздігінің API интерфейсі арнайы сақтау механизмін қолданатын схемадағы кесте атауларын алу үшін және сақтау механизмі жасайтын және жасыратын схемадағы кесте атауларын алу үшін қосылды. Біріншісін NDB талап етеді, ал екіншісі DROP DATABASE операциялары үшін қажет. (Қате #29906844, Қате #95792)

mysqldump -кезектесіп тапсырыс беру опциясымен іске қосылған кезде жад ағып кетеді. (Қате #29906736)

Функционалды индекстерге қатысты сұраулар үшін EXPLAIN FORMAT = TREE индекстелген өрнектің орнына жасырын баған атауын басып шығарды. (Қате #29904996)

Қатені түзету үшін КЕСТЕ ЖАСАУ. ЕСКЕРТПЕУ. операторлар сәтсіз CHECK шектеуіне байланысты енгізілетін соңғы жолды өткізіп жібергенде кесте күйін дұрыс тазартпады. Бұл бекітуді қолдану үшін кестені қолданатын келесі мәлімдемеге әкелуі мүмкін. (Қате #29903865)

Бұл CTE үшін рекурсивті сұрауды тоқтату шартында басқа рекурсивті CTE көмегімен IN предикаты болған кезде MySQL рекурсивті жалпы кесте өрнегінің (CTE) орындалуын дұрыс басқара алмады. (Қате #29899614)

Әр түрлі кесте кеңістігінің файлдарында орналасқан бөлімдері бар кесте үшін сөздіктің серияланған ақпаратын (SDI) десерализациялау сәтсіз аяқталды. (Қате #29898965)

LDAP түпнұсқалық растама плагинін қолданатын аутентификация үшін, егер пайдаланушының DN бөлігі бос болса және топтық салыстыру конфигурацияланған болса, аутентификация қате пайдаланушыға DN тағайындады және пайдаланушы іздеуін өткізіп жіберді. (Қате #29897624)

Аты жоқ анықталған шектеулер кейбір жағдайларда сервердің шығуына әкелуі мүмкін. (Қате #29892876)

NDB кестелік кеңістігінің болмауына байланысты MySQL 5.7-ден MySQL 8.0-ге орнында жаңарту сәтсіз аяқталды. (Қате #29889869, Қате #30113440)

mysqlpump MySQL 5.7 -ден асқан сервермен жұмыс кезінде қате пайда болды. (Қате #29889253)

Boost жүктелген кезде, CMake жүктелген файлдың өлшемін анықтауға арналған конфигурация логикасы дұрыс емес және сәтті жүктеу операциясынан кейін бұл файлды жоя алады. (Қате #29881279)

Қол қойылмаған бүтін санды құюға байланысты мүмкін болатын бүтін санның толып кетуі жадты ерікті түрде бөлуге байланысты буферлік толып кетуге әкелуі мүмкін. (Қате #29878914)

Клиенттік таңбалар жиынтығы latin1 -ден басқа болғанда, сервер ондық мәннің жолдық көрінісін latin1 -ден клиенттік таңбалар жиынына түрлендірді. Бұл түрлендіру қажет емес еді, өйткені барлық қолдау көрсетілетін клиенттік таңбалар сандары latin1 сияқты сандарды кодтайды, сондықтан ол енді орындалмайды. (Қате #29875672)

Vio_description () отладка функциясы қатесіз құрастыруларда шақырылды. (Қате #29871361)

MySQL 8.0.3 -тегі алдыңғы мәселені шешу DATE тұрақты мәндеріндегі өрнектің кэштелуі мүмкін бе, жоқ па деген сұраққа глобальды айнымалылардан басқа кез келген өрнектерге рұқсат етуден бас тартуға мүмкіндік берді. оңтайландырғыш жолды DATE мәніне түрлендіруді қажет ететін байланысты сұраныстардың орындалуына айтарлықтай әсер етті. Бұл тест бастапқы түріне қайтарылды. (Қате #29871018)

Әдебиеттер: Бұл мәселе регрессия болып табылады: #85471 қате, #28576018 қате.

INFORMATION_SCHEMA жад машиналарынан динамикалық кесте статистикасын ала алады, бірақ бұл бөлінген кестелер үшін жұмыс істемеді. (Қате #29870919, Қате #95641)

Сәтсіз кіруді басқару мәлімдемесін қайталау метадеректер босатылған және қайта алынған жерде құлыпталатын кезде терезеге кіруді басқару кэшінің құлпын алуға мүмкіндік береді. Қайталау әрекеті кезінде құлыптар енді босатылмайды. (Қате #29870899, Қате #95612)

Тиісті артықшылықтары жоқ пайдаланушы offline_mode жүйелік айнымалысын қосуға тырысса, бекіту мүмкін. (Қате #29849046)

Fedora қаптамасының конфигурациясы отладтау туралы ақпаратты орналастырады mysql_config_editor қате пакетте. (Қате #29841342)

MeCab плагинін инициализациялау кезінде босатылған нысанды пайдалану әрекеті сегменттеу қатесін тудырды. (Қате #29832534)

Кездейсоқ құпия сөздерге энтропия жасау үшін қолданылатын функция кейде көп энтропияны қамтамасыз ете алмайды. (Қате #29808492)

Super_read_only қосылған кезде, сервер DROP TABLESPACE бағдарламасын дұрыс өңдей алмады. (Қате #29802833)

Сервер материализацияланған семижоинді қамтитын сол жақ қосылымы бар сұранысты өңдемеді. (Қате #29800741)

RPM бумалары арқылы орнатылған MySQL үшін, егер клиенттік тіркелгі LDAP аутентификация плагині арқылы расталса, сервер қосылымын тексерген инициализация сценарийі дұрыс істемеді. (Қате #29786782)

Сақтау қозғалтқышын инициализациялау кезінде қате құлыптау сервердің шығуына әкелуі мүмкін. (Қате #29782379)

GTID қосылған серверде DROP USER бір мезгілде орындалуы және көрініске қол жеткізген дайындалған мәлімдеме тығырыққа тірелуі мүмкін. (Қате #29772622)

EXPLAIN FORMAT = JSON орындау кезінде SELECT WHERE NOT EXIST формасының сұранысында (SELECT FROM ( алынған_кесте ) ҚАЙДА жалған_шарт ) қосылуға қарсы түрлендіруді қамтитын ішкі сұрау жойылды, бірақ онымен бірге жойылмай, өзінің ішкі сұраныстары жоғары жылжытылды. (Қате #29759277)

Сілтемелер: Сондай -ақ қараңыз: Қате #30017509.

Кесте кеңістігін шифрлау операциясы деректер сөздігі мен сақтау механизмінің метадеректері арасындағы сәйкессіздікке әкелді, нәтижесінде кесте кеңістігіне кірудің келесі әрекеті расталмады. (Қате #29756808)

Оқиға жоспарлаушысы мен DROP EVENT бір мезгілде орындалуы құлып алуды күту уақыты аяқталғанша ілінуіне әкелуі мүмкін. (Қате #29742901, Қате #95223)

Баған өрнектен әдепкі мәнін алған кезде CHECK шектеулері орындалмады. (Қате #29706689, Қате #95192)

Уақытша кестесі жоқ бір кестеде екі сұрыптауды орындау кезінде, екі сұрыптау да бір буферді қолдануға тырысты, нәтижесінде оқылым шектен шықты. Бұл сол сұрау DISTINCT және ORDER BY екеуін де қолданғанда орын алуы мүмкін. (Қате #29699759)

Сұрыпталған кестені қамтитын арамшөптерді жою кезінде сұрыптау жол идентификаторлары арқылы жасалмады. (Қате #29693294)

VS2019 /ZI жалаушасын қолдануға байланысты отладка компиляциясы таңдалған компиляция қателерін шығарды. Енді /Z7 орнына қолданылады. (Қате #29691691, Қате #95125)

Деректерді таратуда бұл өзгерістер DBUG пакетіне қатысты, dbug каталогындағы ескі және сақталмаған кодты тазарту үшін енгізілді:

Dbug.cc mysys каталогына жылжытылды, dbug кітапханасы жойылды.

Dbug.cc ішіндегі пайдаланылмаған функциялар жойылды.

DBUG_LEAVE макросы жойылды.

Мүмкін бәрібір басып шығарылмайтын жолдарды пішімдеуді болдырмау үшін DBUG_LOG макросының денесін _db_enabled_ () орады.

Dbug каталогы жойылды.

Сілтеме элементінің массивін бөлу кезінде кез келген терезе функциясының саны ескерілмеді. Нәтижесінде, терезе функциялары бар өрнектер бөлінген кезде, жаңа элемент сілтемелерін сақтауға қажет қосымша орын дұрыс бөлінбеді. (Қате #29672621)

Пайдаланушы айнымалысын салыстыру барлық жағдайларда дұрыс жұмыс істемеді. (Қате #29665165)

SHOW операторларындағы WHERE тармақтарын өңдеу дәйекті түрде орындалмады. (Қате #29664758)

Егер бір ALTER TABLE операторында шектеулерді қосу мен қосуға қатысты сөйлемдер көрсетілсе, олар қате тәртіппен орындалды. (Қате #29652464)

EXPLAIN енді нәтиже жол идентификаторы бойынша сұрыпталғанын көрсетеді. (Қате #29634196)

Қажет емес материализация келесі жағдайларда орындалмайды:

Біріктірудің соңында сұрыптауды орындау кезінде, мысалы, топтау үшін және сұрыптау жол идентификаторларын пайдаланбайды.

Бірнеше рет оқылмайтын туынды кестені жасау кезінде.

БАСТАУ ( арг AS FLOAT) кезде күтілетін ауқымнан тыс қатені қайтармады арг FLOAT мәні ретінде көрсетуге тым кішкентай болды. (Қате #29621333)

FLOAT мәндерінің ішкі конверсиясы кейде қате уақытта болды, бұл нәтижелердің артық дәлдігіне әкелуі мүмкін. Мұнда көрсетілгендей жасалған және толтырылған кестені қарастырыңыз:

Түзетуге дейін, осы кестеге қарсы SELECT f, IF (f & gt 0, f, 0) FROM t сұранысы күтілгендей (2.3, 2.3) орнына (2.3, 2.299999952316284) қайтарылды. (Қате #29621062)

log0meb.cc кейбір құрастыру параметрлерімен компиляциялай алмады. (Қате #29616525)

Клиент кітапханасы серверден нәтижелер жиынының метадеректерін алу кезінде нөлдік көрсеткішке сілтеме жасай алады. (Қате #29597896, Қате №30689251)

Күн мен аралық мәндерді қосқанда интервалдық мәнді тексеру кезінде жұмыс уақыты қатесі орын алуы мүмкін. (Қате #29587536)

Анықталмаған мінез -құлық тазартқышы қосылған құрылыстарда -9223372036854775808 көмегімен көбейту ескертулер мен қате нәтижелерге әкелуі мүмкін. (Қате #29581610)

Іске қосу кезінде сервер екілік журналға тіркеуге болмайтын әрекеттерді жазуға тырысты. (Қате #29557747, Қате #94835)

CREATE VIEW v1 AS SELECT * FROM түріндегі мәлімдеме үстел ҚАЙДА ( тұрақты КІРУ (ТАҢДАУ тұрақты ) БЕЛГІСІЗ) бекітуге әкелді. (Қате #29525304)

Әдебиеттер: Бұл мәселе регрессия болып табылады: #25466100 қатесі.

EL6-де, егер FIPS қосылған OpenSSL кітапханасы болмаса, FIPS режимін қосуға әрекет ету сервердің дұрыс жұмыс істемеуіне әкелуі мүмкін. (Қате #29519794)

SET PERSIST_ONLY SET PERSIST мүмкін емес кейбір жүйелік айнымалыларды сақтау үшін пайдаланылуы мүмкін (айнымалы параметрлердің пайда болуына байланысты). Егер мұндай айнымалы іске қосу кезінде mysqld-auto.cnf табылса, сервер қазір ескерту шығарады және параметрді елемейді. (Қате #29511118)

Сервер кейбір жағдайларда ішінара қайтаруды және схема деңгейіндегі артықшылықты дұрыс жинамады. (Қате #29484519)

Қателерді түзету үшін, DEFAULT тармағымен анықталған ENUM немесе SET бағандары бекітуді көтерді. (Қате #29480711)

Егер Development компоненті таңдалмаған болса, MySQL Installer OpenSSL DLL тәуелділігін орнатпаған. (Қате #29423421, Қате #94168, Қате #30199579, Қате #96573)

READ UNOMMITTED оқшаулау деңгейінде үлкен жүктеме кезінде сегменттеу ақауы пайда болды есте сақталған клиенттер. Бір транзакциямен жаңартылатын сырттан сақталған BLOB бағанын NULL мәні мен нөлдік емес деректер ұзындығы бар басқа транзакция оқыды. (Қате #29396364, Қате #93961)

IPv6 адрес ажыратымдылығы жұмыс істейтін жүйелерде қосылу кезінде IPv6 ұяшығын құру сәтсіздігі жадтың ағып кетуіне әкелді. (Қате #29374606, Қате #94384)

Репликация сценарийлерінде, егер бірнеше клиенттер бірдей XID мәнін қолданған XA COMMIT немесе XA ROLLBACK мәлімдемелерін бір уақытта орындаса, репликацияның сәйкессіздігі орын алуы мүмкін. (Қате #29293279, Қате #94130)

TIMESTAMPADD () функциясының аргументтері дайындалған мәлімдемелер үшін қайтарылуы мүмкін. (Қате #29268394)

CREATE USER операторларына арналған ӘДЕБІЛДІ РӨЛ опциясы екілік журналға жазылмаған. (Қате #28948915, Қате #93252)

Жарамсыз memcached плагин айнымалы параметрлері бар пәрмен жолынан серверді іске қосу серверден шығуға себеп болды. (Қате #28575863)

LOAD DATA үшін SET тармағы GEOMETRY NOT NULL бағандарын орнату үшін жұмыс істемеді. (Қате #28460369, Қате #91893)

Windows 8 және одан жоғары нұсқаларында keyring_aws плагині Amazon KMS серверлерімен байланыса алмады. (Қате #28377961)

INFORMATION_SCHEMA кестелері мен SHOW COLUMNS көріністегі сұрауда UNION операторымен біріктірілген бірнеше сұрау блоктары болған кезде дұрыс емес бағандар түрлерін шығаруы мүмкін. (Қате #28278220, Қате #91486)

Debian жүйесінде InnoDB қалпына келтірудің ұзақ уақыттары жүйелік қызметтің іске қосылмауына әкелуі мүмкін. Бұған жол бермеу үшін әдепкі systemd қызмет күту уақыты өшірілді (RHEL сәйкес). (Қате #28246585, Қате #91423)

Thread_pool плагині қосылған кезде sys.processlist және sys.session көріністері нақты пайдаланушы атауынан гөрі ағын атауын көрсетеді. (Қате #25906021, Қате #85976)

Sys.schema_index_statistics көрінісіндегі delete_latency бағаны SUM_TIMER_DELETE бағанына емес, өнімділік схемасы кестесінің_io_waits_summary_by_index_usage кестесінің SUM_TIMER_INSERT бағанына қате сілтеме жасады. (Қате #25521928)

Sys.diagnostics () процедурасынан шығуда user_summary_by_file_io_type көрінісінің кідіріс бағаны пішімделген мән ретінде емес, шикі пикосекундтарда қате көрсетілді. (Қате #25287996)

MySQL Enterprise Encryption функциялары DH емес кілттерге Diffie-Hellman (DH) әдістерін қолдана алады, нәтижесінде күтпеген нәтижелерге немесе серверден шығуға әкеледі. (Қате #22839007)

SHOW PROCESSLIST және кейбір INFORMATION_SCHEMA және Performance Schema кестелері үшін құпия сөзді маскировка жасау толық болмады. (Қате #20712046)

Қатаң SQL режимі қосылғанда STR_TO_DATE () функциясы уақыт бөліктерімен ғана мәндерді дұрыс өңдей алмады. Даниэль Блэкке үлес қосқаны үшін рахмет. (Қате #18090591, Қате #71386)

WHERE тармағындағы GREATEST () қолданатын сұрау белгілі бір жағдайларда күтілген жолды қайтармауы немесе қате қате жіберуі мүмкін. (Қате #96012, Қате #29963278)

Sort_buffer_size -ді максималды мәнге немесе оған жақын етіп орнату кейбір сұраулардың жадында қате болмауына әкелді. (Қате #95969, Қате #29952775)

Әдебиеттер: Сондай -ақ қараңыз: Қате #22594514.

Индексті іздеуді болдырмау үшін кеш NULL сүзгісі, егер іздеу кілтінде кемінде бір NULL болса, индексті сканерлеуге арналған болса да, кері индексті сканерлеу үшін орындалмады. (Қате #95967, Қате #29954680)

IFNULL () немесе ABS () сияқты функцияны функционалдық индексте қолдану қатеге әкелді, Мән функционалдық индекс үшін ауқымнан тыс. мұндай функцияға аргумент ретінде пайдаланылған UNSIGNED бағанында сәйкес қойылған бүтін санның мәнінен асатын мән болған кезде. (Қате #95881, Қате #29934661)

IFNULL () функциясының шешім процедурасы CASE операцияларынан алынған барлық басқа функцияларға қарағанда ерекшеленді, соның ішінде COALESCE (), бұл белгілі бір сандық өрнектер үшін ұзындық туралы дұрыс емес ақпарат алуға әкелді. (Қате #94614, Қате #29463760)

UNION ALL көмегімен сұраулар. LIMIT 1 Handler_read_key және Handler_read_next көрсеткендей жолдардың шамадан тыс санын бағалады. (Қате #79340, Қате #22292995)

Әдебиеттер: Сондай -ақ қараңыз: Қате #79040, Қате #22158368, Қате #92994, Қате #28866942.

-DWITH_EXAMPLE_STORAGE_ENGINE = 1 CMake опция еленбеді, бірақ олай болмауы керек. Егер -DWITH_EXAMPLE_STORAGE_ENGINE = 0 берілсе, EXAMPLE сақтау механизмі плагин ретінде құрастырылады. (Қате #70859, Қате #17772560, Қате #30133062)


Жетіспейтін статистиканы анықтау

Белгілі бір кестеде SHOW TABLE STATS (кез келген кесте үшін) немесе SHOW PARTITIONS операторы (бөлінген кесте үшін) көмегімен статистикалық мәліметтер бар -жоғын тексеруге болады. Екі мәлімдеме де бір ақпаратты көрсетеді. Егер кестеде немесе бөлімде статистика болмаса, #Жолдар өрісінде -1 болады. Кестенің немесе бөлімнің статистикасын есептегеннен кейін, #Жолдар өрісі дәл мәнге өзгереді.

Келесі мысалда бастапқыда статистикасы жоқ кесте көрсетілген. SHOW TABLE STATS операторы COMPUTE STATS операциясына дейін және кейін #Жолдар үшін әр түрлі мәндерді көрсетеді.

Келесі мысал бөлінген кестемен ұқсас прогрессияны көрсетеді. Бастапқыда #Жолдар -1. COMPUTE STATS операциясынан кейін #Жолдар дәл мәнге өзгереді. Кез келген жаңадан қосылған бөлім статистикасыз басталады, яғни жаңа бөлімді қосқаннан кейін статистиканы жинау керек.

Егер әрбір жеке кестені тексеру мүмкін болмаса, негізгі кестелерді жасыратын кестелердің немесе көріністердің көптігіне байланысты сіз белгілі бір сұрау бойынша жетіспейтін статистиканы тексере аласыз. Сұрауды іске қоспас бұрын сұраудың тиімділігін алдын ала қарау үшін EXPLAIN операторын қолданыңыз. Сұраудың орындалуын және сұрауды орындағаннан кейін уақытты тексеру үшін impala-shell немесе веб-интерфейсіндегі PROFILE пәрмені арқылы қол жетімді сұраныс профилінің шығуын қолданыңыз. EXPLAIN жоспары да, PROFILE шығысы да сұрауға қатысқан кестелер мен бөлімдерде статистика болмаса, ескертуді көрсетеді.

Импала бұл мүмкіндікті тек белгілі бір бөлімдерді бағалау үшін ғана қолданатындықтан, егер сізде кейбір бөлімдердің статистикасы бар, ал басқаларында емес, EXPLAIN операторы ескертуді көрсетсе де көрсетпесе де, сұрауда қолданылатын нақты бөлімдерге байланысты. Мысалы, сіз бір кестеге қатысты әр түрлі сұрауларға арналған ескертулерді көре аласыз:

Кестеде кез келген бөлімдерде статистика жоқтығын растау үшін кестенің барлығын сканерлейтін сұрауды түсіндіруге болады, мысалы, SELECT COUNT (*) FROM table_name.


7 Жауап 7

Сіз мұны қосылмай-ақ жасай аласыз. Мен мұны көрдім және ол жұмыс істеді:

Мен сондай -ақ pwdLastSet үшін .__ ComObject жүйесін аламын, егер менде келесідей пайдаланушы нысаны болса:
$ user = [adsi] «LDAP: // cn = user1, ou = қызметкерлер, ou = пайдаланушы тіркелгілері, dc = ramalamadingdong, dc = net»

$ System объектісінен pwdLastSet мәнін алу үшін [System .__ ComObject] .InvokeMember () және рефлексияны қолдану әдісі болуы керек, бірақ мен оны дұрыс ала алмадым. Мен мұны ешқашан түсінбедім, сондықтан мен жоғарыдағы мысалды қолдандым және әрі қарай жүрдім.

Егер сіз AD -мен (немесе Exchange немесе SQL Server) көп жұмыс жасайтын болсаңыз, онда сіз оған қондырманы алып, оны қолданғыңыз келуі мүмкін.

Windows 7/Windows Server 2008 R2 жүйесімен бірге енгізілген AD командлеттері мұны жеткілікті түрде жасай алады. Windows 7 жүйесінде Powershell шақыруынан:

«PasswordLastSet» атрибуты «pwdLastSet» нақты атрибутының аударылған нұсқасы болып көрінеді.

ADSI нысанында ConvertLargeIntegerToInt64 деп аталатын әдіс бар. Назар аударыңыз, бұл ADSI объектісінің әдісі және жоқ уақыт белгісі аттрибутының мәнін сұрау арқылы қайтарылатын жүйе .__ Comobject, сондықтан $ user.pwdLastSet.value.ConvertLargeIntegerToInt64 () жұмыс істемейді. Сіз оны келесідей шақыруыңыз керек:

Бұл сізге LDAP уақыт белгісін береді, оны жоғарыда Bratch түсіндіргендей оқылатын күнге айналдыру қажет. Бұл ADSI провайдері қайтарған кез келген уақыт белгісінің төлсипат мәні үшін жұмыс істейді және ConvertLargeIntegerToInt64 әдісі (менің ойымша) каталог жазбасын білдіретін кез келген нысанмен ашылады.

Барлығын біріктіре отырып, құпия сөздің соңғы рет орнатылған күнін мына жерден алуға болады:

Міне, AD компьютерлерін көрсетудің қарапайым әдісі:

Келесі пәрмендерді іске қосыңыз:

Get-QADUser | ft дисплей атауы, PasswordLastSet

Бірінші пәрмен жаңа жүктелген тапсырманы жүктейді. Егер сіз бастапқы мәзірде іздеу үшін жарлықты қолдансаңыз, мұны істеудің қажеті жоқ. Екінші пәрмен барлық пайдаланушылардың тізімін алады және пароль соңғы рет өзгертілген уақытты алады.


BigQuery API. кестелер

TableId арқылы берілген кестені деректер жиынынан жояды. Егер кестеде деректер болса, онда барлық деректер жойылады.

Кесте идентификаторы бойынша көрсетілген кесте ресурсын алады. Бұл әдіс кестедегі деректерді қайтармайды, тек осы кестенің құрылымын сипаттайтын кесте ресурсын қайтарады.

Ресурсқа қатынауды басқару саясатын алады.

Деректер қорында жаңа бос кесте жасайды.

Көрсетілген деректер жиынындағы барлық кестелерді тізімдейді. READER деректер жиынының рөлін талап етеді.

Нәтижелердің келесі бетін шығарады.

Бар кестедегі ақпаратты жаңартады. Жаңарту әдісі кестенің барлық ресурсын ауыстырады, ал түзету әдісі тек берілген кесте ресурсында берілген өрістерді ауыстырады. Бұл әдіс патч семантикасын қолдайды.

Көрсетілген ресурста қатынауды басқару саясатын орнатады. Кез келгенін ауыстырады

Қоңырау шалушының көрсетілген ресурстағы рұқсаттарын қайтарады.

Бар кестедегі ақпаратты жаңартады. Жаңарту әдісі кестенің барлық ресурсын ауыстырады, ал түзету әдісі тек берілген кесте ресурсында берілген өрістерді ауыстырады.


4 Жауап 4

Сонда бар анық Enum Design бойынша нұсқаулықтар, онда олардың біреуі былай дейді:

X БОЛМАЙДЫ ашық жиындар үшін Enum пайдаланыңыз (мысалы, операциялық жүйенің нұсқасы, достарыңыздың аттары және т.б.).

ашық жиынға ұқсайды. const мәндері бұл жағдайда жақсы шешім болуы мүмкін. Сізге ештеңені түрлендірудің қажеті жоқ және мәндер үшін кез келген атауларды қолдануға болады.

ПАЙДАЛАНБАҢЫЗ шикі жол және ПАЙДАЛАНБАҢЫЗ санақ. Тізімді бөлек кестеге жылжытыңыз және олардың арасындағы байланысты қосыңыз.

Мен әдетте бекітуді ұнатпаймын, себебі әрқашан ерекше жағдайлар болады. enum (жол емес) кейбір жағдайларда орынды болуы мүмкін (мысалы, тәсіл болатын шағын немесе қарапайым қосымша) алдымен код.) Бұл жағдайда (егер сіздің ОРМ мұны сіз үшін жасамаса) Джимнің жауабын қараңыз, менің ойымша, бұл жол.

Бүтін сандар (enums) кейбір артықшылықтары бар:

  • Олар кішкентай және индекске ыңғайлы.
  • Олар регистрге сезімтал емес.
  • Қала/ел атауын өзгерте алады.
  • Оларды есте сақтау қиын және қателіктерге бейім.
  • Оларды қадағалау үшін сізге бір жерде жеке тізім қажет.
  • Олар оңай емес қолдау ішінара сәйкестіктер.

Жолдар мына артықшылықтарға ие:

  • Оларды тануға және қолмен жазылған сұрауларда қолдануға оңай.
  • Сіз ішінара сәйкестіктерді іздей аласыз.
  • Олар дербес (ДБ-дан басқа жерде тізім қажет емес).

Және кейбір маңызды кемшіліктер:

  • Сіздің деректеріңіз қалыпқа келтірілмеген.
  • Олар әлдеқайда көп орынды ысырап етеді.
  • Қаланың атын өзгерту үшін сізге қажет түрту барлық жазбалар, үлкен мәліметтер базасы үшін бұл үлкен мәселе.
  • Олар көшірмелерді өңдей алмайды.

The басқа шешім болып табылады біріктіру олар бөлек кесте жасайды Орын (немесе қала немесе ел) және оны сіздің жазбаңызбен байланыстырады. Бұл келесі артықшылықтарға ие:

  • Есімдерді өзгерту оңай.
  • Ол бүркеншік аттарды өңдейді. Бұл аспектіні бағаламаңыз:
    • Мен Hertogenbosch-те тұрамын, ол Den Bosch деп аталады (иә, есімде апостроф пен минус белгісі бар.)
    • Менің әйелім - Тайвань, Италияда (біз бұрын өмір сүрген едік) біз оның елін РОК, Қытай Республикасы, Тайвань, Формоза және бірнеше рет Қытай (Тайвань) ретінде тіркеуді көретінбіз. Кейде олар қолданатын бағдарламалық қамтамасыз ету Тайваньды түсінсе де түсінеді ресми олар көрсеткен аты - R.O.C.

    Кімге қорытындылау: бөлек кестедегі жолдардың артықшылықтары қандай? Мен ойлай алатын ештеңе жоқ. Бүтін сандар? Олар кішірек (бірақ бірнеше Кб қазіргі уақытта мәселе емес, солай ма?) Артықшылықтары? Мәліметтер қорының тұтастығы, өзгертулер үшін ашық, реттелетін (жаңа елді қосу үшін кодты қайта жинаудың немесе күрделі сұрауларды жазудың қажеті жоқ), қосымша мүмкіндіктер (ішінара сәйкестіктер, бүркеншік аттар) және UI/BI.

    Пікірлерден жиналған бірнеше ескертулер:

    • Егер сіз ескі деректер базасымен жұмыс жасасаңыз, болашақта бір күні емес, дәл қазір өзгерістерді енгізу уақыты. Егер сіз өзіңіздің жеке кодыңызды нашар жасаған болсаңыз, онда болашақта өзгерістің құны одан да үлкен болады (және ол болмайды).
    • Ескі қосымшалар кестенің орнына көріністі сұрай алады.
    • Елдер атауын өзгертеді, олар бөлінеді және қосылады. Бизнес өсіп, қысқарады.
    • Ешқашан нақты әлемде ештеңе өзгермейді деп ойламаңыз. Сіздің үстеліңізде еркек/әйелді белгілеу үшін кішкене нәрсе болды ма? Нашар таңдау. Сіз қатты кодталған тізімге көштіңіз бе? Дұрыс емес таңдау, себебі әр түрлі клиенттерге әр түрлі тізімдер қажет болады.
    • Өзгерістерге ашық болыңыз. Болашақта сіз халықаралық телефон коды үшін бағанды, мекенжайлар үшін қолданылатын пішімдеу жолының бағанын қосқыңыз келуі мүмкін.
    • Сіздің бүтін сандардың қауіпсіздігі мен тұтастығы туралы алаңдаушылығыңыз (олар BTW жолдармен жеңілдетілмейді) негізгі қатеден туындайды: дерекқор деректерін (қол жетімді елдердің тізімі) дерекқордан тыс тасымалдау. Оны дерекқордың ішінде сақтаңыз және дерекқордың тұтастығы ережелері сіз үшін жұмыс істейді.

    Оны екі рет талдаудың қажеті жоқ. Сіз жай ғана пайдалана аласыз:

    Бұл мәнді талдау мүмкін болмаған жағдайда, мен ерекше жағдайды шығарар едім (немесе, кем дегенде, тіркеуді қосыңыз). Егер бұл орын алса, сізде күрделі мәселе бар.

    Шын мәнінде, мен негізгі бүтін санды сақтауды жөн көрдім, себебі:

    егер біреу enum мәндерін өзгертсе, дерекқорға қосылу жоғалады. Әрине, бұл мәселе сандық мәндер үшін де бар, бірақ IMHO мүмкін емес.

    Enum мен int арасындағы айырбастау ақысыз (мүмкін, құрылымдық құрылым мұны сіз үшін жасай алады !?)

    Ашық жиындар мен байланысты кестелер туралы басқа жауаптарды есте сақтаңыз - бұл әрқашан жақсы нұсқа, және, мүмкін, дәл осы жағдайда жақсы нұсқа.

    Дегенмен, егер enum - бұл C# -тегі сәйкес құрылғы, және сіз белгілі C# коды дерекқордан гөрі кез келген өзгерісті басқаруы керек - менің таңдаған әдісім - дерекқордағы негізгі мән түрін сақтау (bigint, int, smallint, tinyint) содан кейін бағанды ​​жарамды enum мәндерімен шектеңіз.

    Егер сіз алғыңыз келсе одан әрі, көптеген деректер қорының қозғалтқыштарында мәнді мәтін жолына байланыстыру үшін UDF дерекқорын (жақсырақ кірістірілген кесте функциясын) қолдануға болады.

    Сіз бұған қанша уақыт бөлгіңіз келетініне байланысты мүмкін enum мүшелерінің үстінен шағылыстыру үшін құрастырудан кейінгі тапсырманы қолдана отырып, ALTER TABLE және CREATE FUNCTION мәлімдемелерін автоматты түрде генерациялауға болады-T4 мәтін шаблоны.

    Бірақ, шынымен де, қайтып оралыңыз және сәйкес кестеге/шетелдік кілт тәсіліне қараңыз. Ұзақ мерзімді перспективада сіз осыдан гөрі көбірек жүгіріс аласыз. Жоғарыда келтірілген тәсілдің кілті - бұл сенімділік C# enum - мәндердің жарамды диапазонының канондық көзі. Егер сіз деректерді сақтау үшін жолдарды қолданумен күресетін болсаңыз, сізде бұл бар екеніне күмәнім бар.